【发布时间】:2022-02-01 07:30:33
【问题描述】:
如何正确地将以下结构映射到对象 有 JSON:
{"store": [{
"id":"100",
"products": {
"prod1":["price","quantity"], //Maximum 2 elements
"prod2":["price","quantity"], //Maximum 2 elements
"prod3":["price","quantity"] //Maximum 2 elements
//There may be many (known or not..prod4, prod5....)
}}]}
类:
@Data
@NoArgsConstructor
public class Store {
@JsonProperty("store")
private Set<Stores> stores;
}
@Data
@NoArgsConstructor
public class Stores {
@JsonProperty("id")
private int id;
@JsonProperty("products")
private Set<Products> productsSet;
}
@Data
@NoArgsConstructor
public class Products {
??????
}
我需要如何在产品类中写作?
映射器:
//omit exceptions and other code
public Store toStoreFromJson(String str) {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(str, Store.class);
}
【问题讨论】:
-
由于产品的密钥似乎是任意的,我会说你需要一个
Map<String, Product>。要映射它,我建议您使用名称products将其放入Stores(并删除此处没有意义的productsSet- 集合将映射到 JSON 数组,而您的 JSON 没有该属性的数组)。
标签: java json jackson json-deserialization