gpt4 book ai didi

java - 如何配置 jackson objectmapper 以正确反序列化为 pojo?

转载 作者:行者123 更新时间:2023-11-29 09:50:20 25 4
gpt4 key购买 nike

我在理解反序列化时应该如何配置 objectMapper 和 pojo 时遇到一些问题。我的 Json 是由另一个应用程序创建的同时支持 xml 和 json。它返回一个包含 myobject 的列表,但 Json 包含类型,如下所示:

[
{
"myobject": {
"somethingcool": "amazing",
"contactPersonsForMyObject": [
"test.test@gmail.com",
"test@test.se"
],
"myObjectId": "c85e48730501bfae41e67714c6131b7d"
}
},
{
"myobject": {
"somethingcool": "cool",
"contactPersonsForMyObject": [
"test.test2@gmail.com",
"test@test2.se"
],
"myObjectId": "c85e48730501bfae41e67714cqwerty"
}
}
]

我的类(class):

public class MyObject {

private String myObjectId;
private String somethingcool;
private List<String> contactPersonsForMyObject;

public String getMyObjectId() {
return myObjectId;
}

public void setMyObjectId(String myObjectId) {
this.myObjectId = myObjectId;
}

public String getSomethingcool() {
return somethingcool;
}

public void setSomethingcool(String somethingcool) {
this.somethingcool = somethingcool;
}

public List<String> getContactPersonsForMyObject() {
return contactPersonsForMyObject;
}

public void setContactPersonsForMyObject(List<String> contactPersonsForMyObject) {
this.contactPersonsForMyObject = contactPersonsForMyObject;
}
}

但是在做的时候:

List<MyObject> myObjects = mapper.convertValue(rootNode, new TypeReference<List<MyObject>>() {});

我收到一个异常说明:

java.lang.IllegalArgumentException: Unrecognized field "myobject" (Class com.domain.MyObject), not marked as ignorable
at [Source: N/A; line: -1, column: -1] (through reference chain: com.domain.MyObject["myobject"])

这就像映射器不理解额外的“层”。序列化以获得此结构时,可以像这样配置映射器:mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);

那么应该有什么办法可以反过来?

谢谢!

最佳答案

你需要给它具体的类而不是接口(interface)。所以

List<Map<String, MyObject>> myObjects = mapper.readValue(json, new TypeReference<ArrayList<HashMap<String, MyObject>>>() {
});

关于java - 如何配置 jackson objectmapper 以正确反序列化为 pojo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254640/

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