java - Jackson - 如何反序列化包含额外包装器的子对象列表
问题描述
问题:由于额外的包装器,我正在努力将子对象(项目)映射到 Product.java 类。
杰森:
{
"id": "1",
"desc": "Shopping",
"items": [
{
"product": {
"id": 2,
"name": "Sugar"
}
},
{
"product": {
"id": 1,
"name": "Flour"
}
}
]
}
域模型 - 订单(JSON 父级):
public class Order {
private int id;
private String desc;
private Set<Product> items;
}
领域模型 - 产品(JSON 子)
public class Product {
private int id;
private String name;
}
我如何使用 jackson 或任何其他 json 依赖项将此 json 字符串映射到这些域模型?
解决方案
String data = "{" +
"\"id\": \"1\"," +
"\"desc\": \"Shopping\"," +
"\"items\": [" +
" {" +
" \"product\": {" +
" \"id\": 2," +
" \"name\": \"Sugar\"" +
" }" +
" }," +
" {" +
" \"product\": {" +
" \"id\": 1," +
" \"name\": \"Flour\"" +
" }" +
" }" +
"]" +
"}";
Gson gson = new Gson();
Order o = gson.fromJson(data, Order.class);
System.out.println(o);
这条线的诀窍是
Order o = gson.fromJson(data, Order.class);
推荐阅读
- influxdb - 为什么 InfluxDB v2 配置文件不起作用?
- javascript - 在谷歌标签管理器中使用 Javascript Shopify 产品变体
- fonts - 如何在 Jupyter Lab 中更改输出单元格的字体
- java - 裁剪图像与形状
- javascript - 组合数组中的不同对象
- php - 如何从 2 个表中获取匹配的行
- c++ - 将消息从 C++ Windows 桌面应用程序发送到 DLL
- mongodb - MongoDB:***在将独立集转换为副本集期间出现 fassert() 失败错误后中止
- audiounit - 如何从音频单元获取 NSView 对象
- html - 为什么 btn 和 h1 仍然在同一行?