gpt4 book ai didi

java - 如何使用 Jackson 反序列化此 JSON?

转载 作者:行者123 更新时间:2023-12-01 23:30:20 25 4
gpt4 key购买 nike

我的 json 看起来像这样:

{
"summary":{
"somefield1":"somevalue1",
"Twilio":{
"field1":"value1",
"field2":"value2"
},
"Tropo":{
"field1":"value1",
"field2":"value2"
},
...
}
}

我想将它反序列化为一个如下所示的 java 类:

public class Summary {
private String someField1;
private List<Vendor> vendors;
}

public class Vendor {
private String name;
private String field1;
private String field2;
}

因此,Twilio 和 Tropo 需要成为列表中的 Vendor 对象,其中 Vendor.name ==“Twilio”或“Tropo”。

我确信 Jackson 拥有我使用此结构所需的工具,但我一直在网络搜索方面表现出色。

最佳答案

您可以结合使用 @JsonRootName@JsonAnySetter 注解来完成此操作。您的 Summary 类应如下所示:

@JsonRootName("summary")
class Summary {

@JsonProperty("somefield1")
private String someField1;
private List<Vendor> vendors = new ArrayList<Vendor>();

@JsonAnySetter
public void setDynamicProperty(String vendorName, Map<String, String> properties) {
Vendor vendor = new Vendor();
vendor.setName(vendorName);
vendor.setField1(properties.get("field1"));
vendor.setField2(properties.get("field2"));

vendors.add(vendor);
}

//getters,setters,toString methods

}

使用示例:

ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);

System.out.println(mapper.readValue(json, Summary.class));

上面的源代码显示了下面的 JSON 字符串:

Summary [someField1=somevalue1, vendors=[Vendor [name=Twilio, field1=value1, field2=value2], Vendor [name=Tropo, field1=value1, field2=value2]]]

关于java - 如何使用 Jackson 反序列化此 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com