我尝试使用JacksonobjectMapper对一个JSON对象进行格式化。我遇到的问题是,这个目标对象可以被 Package 在各种其他JSON中,包括一些但不是所有匹配我的目标的字段。例如,我尝试对如下对象进行格式化:
public class Dog {
private String name;
private int age;
private String color;
}
字符串
从JSON对象,例如:
{
"type":"animal",
"name":"pet",
"object":{
"name":"Rex",
"age":4,
"color":"brown"
}
}
型
或者它可以来自一个对象,例如:
{
"pet-dog":{
"name":"Rex",
"age":4,
"color":"brown"
}
}
型
我还设置了@JsonIgnoreProperties(IgnoreUnknown=true),因为我的对象有时会有不重要的可选字段。
问题有两个方面,首先我需要解包任意JSON来找到我的目标对象,任意JSON在请求之间会有很大的变化;其次,要解包的任意JSON可能匹配我的目标对象的一个或多个字段名称(例如上面例子中的“name”)。
我想要的方法是在JSON中搜索一个包含一组必填字段的对象,然后尝试将其定义为我的对象。但不知道如何实现这一点。
我已经尝试使用ObjectMapper为所需属性添加注解:@JsonProperty(value = "user", required = true)
。
1条答案
按热度按时间vnzz0bqm1#
解决方案之一是先将整个JSON转换成
JsonNode
,然后使用JSON库搜索并转换JsonNode
,再转换为POJO。https://github.com/octomix/josson
JSON 1
字符串
JSON 2
型