将 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# 中的对象列表?

如何解析包含对象列表的 JSON

C# 将动态 JSON JToken 解析为列表

将 App.Config 数据解析为对象列表

使用jackson将pojo(对象列表)转换为java中的json

python 解嵌套的list