将 json 列表解析为 Java 对象列表
Posted
技术标签:
【中文标题】将 json 列表解析为 Java 对象列表【英文标题】:Parse a json list into list of object Java 【发布时间】:2021-11-14 09:58:56 【问题描述】:我的回复如下
[
"segmentId": "Source_2021-09-01_2021-10-01",
"columns": [
"merchantRefNum",
"customerId",
"firstName",
],
"events": [
"merchantRefNum": "67456456",
"customerId": rfgvkhbj,
"firstName": "peter",
,
"merchantRefNum": "654584856",
"customerId": null,
"firstName": "peter"
]
]
我想把这个 json 映射到一个 POJO 对象并创建了这个类
public class MyClass
private String segmentId;
private List<String> columns;
private List<KeyValuePair> events;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public static class KeyValuePair
Map<String, String> event;
我目前正在使用这种方式阅读本文
List<MyClass> responses = new ObjectMapper().readValue(jsonString,new TypeReference<List<MyClass>>());
事件的大小为 2,但每个事件都以 null 而不是地图的形式出现。
有人可以帮帮我吗?
【问题讨论】:
***.com/questions/18002132/…的可能重复 【参考方案1】:要实现您的目标,您必须按如下方式调整 JSON:
[
"segmentId":"Source_2021-09-01_2021-10-01",
"columns":[
"merchantRefNum",
"customerId",
"firstName"
],
"events":[
"event":
"merchantRefNum":"67456456",
"customerId":"rfgvkhbj",
"firstName":"peter"
,
"event":
"merchantRefNum":"654584856",
"customerId":null,
"firstName":"peter"
]
]
注意已添加的事件字段。
或者,更改您的 DTO,如下所示:
class MyClass
private String segmentId;
private List<String> columns;
private List<Map<String, String>> events;
【讨论】:
以上是关于将 json 列表解析为 Java 对象列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Newtonsoft.Json 将包含数组数组的 json 对象解析为 C# 中的对象列表?