有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将转义引号的json转换为xml

我有以下json字符串:

{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>

显然,“data”中的数据已转换为字符串。实际上,我想要的是这样的结构,其中“数据”块的内容转换为标记:

<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>

在爪哇


共 (1) 个答案

  1. # 1 楼答案

    转义引号意味着它们被转义,字符串不再是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);