我正在尝试使用 Jackson 2 和 RestAssured(用于 IT 测试的 java 工具)来反序列化 JSON 字符串。
我有一个问题。我试图反序列化的字符串是:
{"Medium":{"uuid":"2","estimatedWaitTime":0,"status":"OPEN_AVAILABLE","name":"Chat","type":"CHAT"}}
字符串开头有对象类型“Medium”。这导致 jackson 在反序列化期间失败:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Medium"
我已将“IGNORE_ON_UNKNOWN_PROPERTIES”设置为 false,然后在反序列化过程中没有出现异常。但是,我的所有属性在 java 中都是“null”。
Response getAvailability -> {"Medium":{"uuid":"2","estimatedWaitTime":0,"status":"OPEN_AVAILABLE","name":"Chat","type":"CHAT"}}
@@@ MEDIUM name -> null
@@@ MEDIUM uuid -> null
@@@ MEDIUM wait time -> null
@@@ MEDIUM wait time -> null
@@@ MEDIUM status -> null
有人可以帮助我吗? (注意:我无法更改输入的 JSON 字符串)。
最佳答案
{
"Medium": {
"uuid": "2",
"estimatedWaitTime": 0,
"status": "OPEN_AVAILABLE",
"name": "Chat",
"type": "CHAT"
}
}
如您所见,uuid 和其他参数是中型对象的一部分,因此可以反序列化的类也是。
class Medium
{
string name;
// specify other params also.
}
class BaseObject
{
Medium Medium;
}
然后使用jackson.deserialize('json', BaseObject.class)
上面我给出了伪代码
关于java - jackson 解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35222488/