我有一个 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/