java - 将具有多个条目的 JSON 映射到数组

标签 java json jackson mapping

我有一个 JSON 文件,其中包含多个具有相同属性名称但属性值不同的条目,例如:

{
  "name" : { "first" : "A", "last" : "B" },
  "gender" : "MALE",
  "married" : false,
  "noOfChildren" : 2
},
{
  "name" : { "first" : "C", "last" : "D" },
  "gender" : "FEMALE",
  "married" : true,
  "noOfChildren" : 1
}

它应该映射的类是:

公共(public)类人类{

private Name name;
private String gender;
private int age;

<getter, setters etc>

}

编辑: 服务代码是:

List<Human> humans = null;
ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

try {

    humans= objectMapper.readValue(json, new TypeReference<List<Human>>(){});

} catch (IOException e) {
    e.printStackTrace();
}

JSON 是从 HTTP 实体解析的,格式正确,现在我添加了答案中建议的注释。

正如您所看到的,它们有一些共同的属性,但在其他方面有所不同,我想映射这些共同的字段。可以用这种方式映射 JSON 吗?我尝试过将 JSON 映射到 JsonNodes 的集合/列表/数组,但我不断收到有关反序列化的错误,而仅映射 JSON 条目的一个实例效果很好。还有其他方法可以做到这一点吗?

最佳答案

使用

@JsonIgnoreProperties(ignoreUnknown = true)
public class Human {
    private Name name;
    private String gender;
    // getters, settets, default constructor
}

或者如果您使用 Lombok那么就会是

@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Human {
    private Name name;
    private String gender;
}

关于java - 将具有多个条目的 JSON 映射到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41609388/

相关文章:

java - 当内存占用超过一定阈值时强制进行全面垃圾回收

java - 通过 ID 检索用户对象

c++ - 用于 2D RPG 的 XML vs YAML vs JSON

android - 使用 jackson 在android中使用相同的 key 但不同类型反序列化json

java - 使用 Jackson 和 Spring 将 JavaScript 数组反序列化为 Java LinkedHashSet 不会删除重复项

java - java帮助中的基数排序

java - P2P java文件传输

json - 如何反转json文件?

PHP json_encode 将数字编码为字符串

java - 枚举的反序列化不起作用 - Jackson