繁体   English   中英

在运行时将JSON对象的JSON对象覆盖到JSON字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM