我有以下json-string:
{result:{"id":"1234","pages": [{"Id":50,"data":"{\"name\":\"name1\",\"description\":\"description1\"}"}],"errors":[] }}
我想转换为xml。我尝试了几种转换方法,其中一种方法在此处描述:Java implementation of JSON to XML conversion:
JSONObject o = new JSONObject(jsonString);
String xml = org.json.XML.toString(o);
结果是:
<result><id>1234</id><pages><data>{"name":"name1","description":"description1"}</data><Id>50</Id></pages></result>
或格式化:
<result>
<id>1234</id>
<pages>
<Id>50</Id>
<data>{"name":"name1","description":"description1"}</data>
</pages>
</result>
显然数据中的数据&#39;被转换为字符串。实际上我想要的是一个像这样的结构,其中的数据内容是&#39;块转换为标签:
<result>
<id>1234</id>
<pages>
<Id>50</Id>
<data>
<name>name1</name>
<description>description1</description>
</data>
</pages>
</result>
我知道如果json字符串是
,这就是结果{result:{"id":"1234","pages": [{"Id":50,"data":{"name":"name1","description":"description1"}}],"errors":[]}}
但不幸的是我无法改变它。
所以有人知道转换方法
{result:{"id":"1234","pages": [{"Id":50,"data":"{\"name\":\"name1\",\"description\":\"description1\"}"}],"errors":[] }}
到
<result>
<id>1234</id>
<pages>
<Id>50</Id>
<data>
<name>name1</name>
<description>description1</description>
</data>
</pages>
</result>
在java?
答案 0 :(得分:0)
远离引号意味着它们被转义并且字符串不再是json。 你要做的不是任何一种json标准 - 所以你必须自己解决问题; - )
这个怎么样:
JSONObject o = new JSONObject(jsonString.replaceAll("\\\\\"", "\""));
String xml = org.json.XML.toString(o);
更新 - 还有更多问题 - 这会有效:
JSONObject o = new JSONObject(
jsonString.replaceFirst("result", "\"result\"")
.replaceAll("\"\\{", "{")
.replaceAll("\\}\"", "}")
.replaceAll("\\\\\"", "\"") );
String xml = org.json.XML.toString(o);