转换json将引号转义为xml

时间:2016-03-02 09:43:21

标签: java json xml

我有以下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>{&quot;name&quot;:&quot;name1&quot;,&quot;description&quot;:&quot;description1&quot;}</data><Id>50</Id></pages></result>

或格式化:

<result>
  <id>1234</id>
  <pages>
    <Id>50</Id>
    <data>{&quot;name&quot;:&quot;name1&quot;,&quot;description&quot;:&quot;description1&quot;}</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?

1 个答案:

答案 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);