如何解决你如何在没有字段 id 的情况下使用 Java @JsonProperty 和 jackson.databind.ObjectMapper?
我有一个看起来像这样的 json:
{
"Data" : {
"abc" : {
"1" : "foo","2" : "bar"
},"def" : {
"1" : "foo","2" : "baz"
}
},"Status" : {
"Code" : 0,"Text" : "Success"
}
}
我真正关心的是“数据”里面的内容。我正在尝试使用 jackson.databind.ObjectMapper
将其映射到我的自定义类,其中“abc”是名称,“1”的值是 property1,“2”的值是 property2。
public class MyClass {
String name;
String property1;
String property2;
@JsonProperty("1")
public void setProp1(String prop1) {
this.property1 = prop1;
}
@JsonProperty("2")
public void setProp2(String prop2) {
this.property2 = prop2;
}
@JsonProperty(?????)
public void setName(String name) {
this.name = name;
}
}
我想以与设置其他属性相同的方式设置名称,使用 JsonProperty 注释,但名称始终不同,并且没有与其他属性相同的字段 ID。我怎样才能做到这一点?这是我目前所拥有的:
public static void main(String[] args) {
String json = "{\"Data\" : {\"abc\" : {\"1\" : \"foo\",\"2\" : \"bar\"},\"xyz\" : {\"1\" : \"foo\",\"2\" : \"baz\"}},\"Status\" : {\"Code\" : 0,\"Text\" : \"Success\"}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode dataNode = mapper.readTree(json);
JsonNode innerJson = dataNode.findPath("Data");
JsonNode abcNode = innerJson.findPath("abc");
MyClass myClass = mapper.readValue(abcNode.toString(),MyClass.class);
System.out.println(myClass);
}
产生:
>>MyClass[name=,prop1=foo,prop2=bar] // 重写 toString()
如果您能解释如何在不将它们硬编码到 findPath(String)
中的情况下获取密钥(名称),则加分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。