因此,我正在反序列化嵌套的JSONObject,但是不想为每个嵌套的对象创建一个类。我正在尝试使用嵌套的JSONObjects并将其放在JSONObject中。
public class ContainerStatus {
@JsonProperty("name")
private String name;
@JsonProperty("state")
private JSONObject state;
@JsonProperty("lastState")
private JSONObject lastState;
@JsonProperty("ready")
private Boolean ready;
@JsonProperty("restartCount")
private Integer restartCount;
@JsonProperty("image")
private String image;
@JsonProperty("imageID")
private String imageID;
@JsonProperty("containerID")
private String containerID;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
使用它反序列化:
{ "containerStatuses":
{
"name": "connect",
"state": {
"terminated": {
"exitCode": 1,
"reason": "Error",
"startedAt": "2019-03-20T15:40:08Z",
"finishedAt": "2019-03-20T15:40:50Z",
"containerID": "docker://"
}
},
"lastState": {},
"ready": true,
"restartCount": 0,
"image": "image",
"imageID": "docker-pullable://",
"containerID": "docker://"
}}
由于状态JSONObject,我无法识别字段“终止”。
我想要一个:
JsonObject state = {
"terminated": {
"exitCode": 1,
"reason": "Error",
"startedAt": "2019-03-20T15:40:08Z",
"finishedAt": "2019-03-20T15:40:50Z",
"containerID": "docker://"
}
}
我可以将其转换为通用对象,但是格式不再是JSON:
@JsonProperty("state")
private Object state;
Gives me this format:
{running={startedAt=2019-03-20T14:53:53Z}}
答案 0 :(得分:0)
您需要改进一下示例:
reply-channel
,启用此功能可以
解开DeserializationFeature.UNWRAP_ROOT_VALUE
对象。 JSON
注释添加到您的JsonRootName
类中,因为类名与属性POJO
不匹配。 containerStatuses
库的JsonNode
代替可能来自Jackson
的{{1}}。改进的示例如下所示:
JSONObject
上面的代码显示:
org.json