【发布时间】:2019-09-11 00:33:07
【问题描述】:
我有一个字符串格式的 JSON 值,如下所示。
{
"Sample": {
"name": "some name",
"key": "some key"
},
"Offering": {
"offer": "some offer",
"amount": 100
}
}
现在,如果我尝试将其映射如下,它可以正常工作并且映射良好。
//mapper is ObjectMapper;
//data is the above json in String format
Map vo = mapper.readValue(data, Map.class);
但我想将其映射到自定义数据类,如下所示。
Data vo = mapper.readValue(data, Data.class);
当我这样做时,vo 的结果为空。
请参阅下文,了解 Data 类的结构。
@Getter
@Setter
public class Data {
private Sample sample;
private Offering offering;
}
@Getter
@Setter
public class Offering {
public String offer;
public int amount;
}
@Getter
@Setter
public class Sample {
private String name;
private String key;
}
请指教我做错了什么。谢谢。
【问题讨论】:
-
杰克逊真的理解那些
@Setter和@Getter注释吗?每当我这样做时,我只是创建了适当的方法。 -
我真的怀疑 vo 是否为空。不过,它的样本及其产品可能是空的,因为 Jackson 会期望两个名为
sample和offering的属性,并且 JSON 包含Sample和Offering -
我在 json 中看到它的“样本”,但在课堂上看到它的“样本”
-
@markspace - 那是龙目岛。这是一种无需编写 getter 和 setter 即可生成 getter 和 setter 的方法。