- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Spring 和 Jackson 来序列化对象,然后将它们作为 API 的一部分作为 XML 返回。 Jackson 文档概述了返回的根元素名称应与对象的类名称相匹配。
我有以下模型。我已明确将根元素设置为等于“product”。
package example.models;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import java.util.Date;
@Data
@Entity
@Table(name = "products")
@JacksonXmlRootElement(localName = "product")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@CreationTimestamp
private Date createdAt;
@UpdateTimestamp
private Date updatedAt;
}
在我的 Controller 中,我返回包含检索到的产品列表的响应。
package example.controllers;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/products")
@RequiredArgsConstructor
public class ProductController {
private final ProductRepository productRepository;
@GetMapping(path = "/{id}", produces = {"application/json", "application/xml"})
public ResponseEntity<Optional<Product>> getProduct(@PathVariable Long id) {
return ResponseEntity.ok(this.productRepository.findById(id));
}
}
当我到达端点时,/api/products/1
我得到:
<Optional>
<id>1</id>
<name>Example</name>
<createdAt>2019-12-18T12:44:12.536+0000</createdAt>
<updatedAt>2019-12-18T12:44:12.536+0000</updatedAt>
</Optional>
虽然,我期待:
<product>
<id>1</id>
<name>Example</name>
<createdAt>2019-12-18T12:44:12.536+0000</createdAt>
<updatedAt>2019-12-18T12:44:12.536+0000</updatedAt>
</product>
我如何使用 Jackson/jackson-dataformat-xml
来实现此目的,因为我的注释看起来没有效果?
最佳答案
更改端点以返回Product
而不是Optional
。
@GetMapping(path = "/{id}", produces = {"application/json", "application/xml"})
public ResponseEntity<Product> getProduct(@PathVariable Long id) {
return ResponseEntity.ok(this.productRepository.findById(id).get());
}
注意:为了简单起见,此处使用Optional.get()
。没有 Product
的情况应使用 Optional
方法(如 isPresent()
或 orElse()
)正确处理。
关于java - 使用 Jackson 注释将对象序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59396295/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!