杰克逊序列化列表实体(加场到根目录)
问题描述:
这是我的实体杰克逊序列化列表实体(加场到根目录)
@Entity
public class Product extends AbstractBaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Type(type = "objectid")
private String id;
private String title;
我的资源
@Path(value = ApiConstant.Urls.PRODUCTS)
public class ProductResource {
@Inject
private ProductService productService;
@GET
@Path(value = ApiConstant.Urls.PRODUCTS)
@Produces(value = MediaType.APPLICATION_JSON)
public List getProducts(){
return productService.findAll();
}
我JSON响应
[ {
"id" : "596b6a02f70a0878590bcf08",
"title" : "test1",
"description" : "description test 1"
}, {
"id" : "596b6b00f70a087b72d377eb",
"title" : "test1",
"description" : "description test 1"
}, {
"id" : "596b6b75f70a087d40f580d5",
"title" : "test1",
"description" : "description test 1"
} ]
我想创建一个计数字段对这样的列表 中的项目进行计数并将该列表添加到结果字段
{
"count": 3,
"results": [
{
"id" : "596b6a02f70a0878590bcf08",
"title" : "test1",
"description" : "description test 1"
}, {
"id" : "596b6b00f70a087b72d377eb",
"title" : "test1",
"description" : "description test 1"
}, {
"id" : "596b6b75f70a087d40f580d5",
"title" : "test1",
"description" : "description test 1"
} ],
}
我想序列由JPA持续返回商品目录
答
您可以使用下面的类包括计数与Product
实体的名单一起:
public class ResultList {
private int count;
@JsonProperty("results") private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = Objects.requireNonNull(products, "products");
this.count = products.size();
}
public int getCount() {
return count;
}
}
+0
太好了......感谢您的帮助 – Pako
答
类泛型type
public class ResultList<T> {
private int count;
@JsonProperty("results")
private List<T> items;
public List<T> getItems() {
return items;
}
public void setItems(List<T> items) {
this.items = Objects.requireNonNull(items, "items");
this.count = items.size();
}
public int getCount() {
return count;
}
}
ProductResource
@GET
@Path(value = ApiConstant.Urls.PRODUCTS)
@Produces(value = MediaType.APPLICATION_JSON)
public ResultList getProducts(){
List products = productService.findAll();
ResultList result = new ResultList<Product>();
result.setItems(products);
return result;
}
感谢@ CK1
您可以创建一个新的类'ProductsWrapper'与'count'和'results'然后在'getProducts'方法创建的这个实例,而是返回它的名单。 – tima