[英]Coverting JSON String which is part of JSON object to JSON Object on the run
我在我的项目中使用REST模板使用REST Web服务,该模板返回JSON,如下所示:
{"data": [{
"id": "INT-1468819244684-event-no-97",
"object1": {
"JSONString": "{\"object2\":[{\"object3\":\"value3\",\"object4\":\"value4\"}]}"
}
}]
}
使用上述JSON响应时,我可以创建一个bean类,并可以将JSON对象/值转储到相同的类中。
但是问题出在json响应上方,包含如下字符串:
"JSONString": "{\"object2\":[{\"object3\":\"value3\",\"object4\":\"value4\"}]}"
实际上是一个json。 所以我有一个可以在其中获取JSONString作为String的bean。 所以目前我可以使用下面的bean结构来获取对象的响应:
public class response {
Data data;
}
public class Data {
String id;
Object1 object1;
}
public class Object1 {
String jsonString;
}
但是上面的jsonString包含一个json形式的字符串,因此我想以某种方式仅在创建其他对象时将此JSON字符串在运行时转换为JSON对象并将其所有内容转储到同一bean中,以便应用程序可以随时使用它的内容。 因此,理想情况下,我的bean层次结构应如下所示:
public class response {
Data data;
}
public class Data {
String id;
Object1 object1;
}
public class Object1 {
JSONString jsonString;
}
public class JSONString {
Object2 object2;
}
public class Object2 {
String object3;
String object4;
}
请指导我如何做。
您可以通过以下方式使用Jackson的ObjectMapper.readValue:
// Create or use your existing ObjectMapper
ObjectMapper om = new ObjectMapper();
@JsonProperty("JSONString")
public String getJSONString() {
if (this.jsonString == null)
return null;
return om.writeValueAsString(this.jsonString);
}
public void setJSONString(String s) {
this.jsonString = om.readValue(s, JSONString.class);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.