java - 忽略 JSON 到 XML 转换中的键

标签 java json xml xml-parsing

我正在使用 json 库将 json 转换为 xml,但在转换时我想忽略要转换为 xml 标签的嵌套 json 对象。

例如。

平面 json 如下:

{"id":"9568","name":"Customer Analysis","group":"demo","param":{"globalSettings":{"showLegends":false,"legendPosition":"bottom center"}}}

JSONObject json = new JSONObject("{\"id\":\"9568\",\"name\":\"Customer Analysis\",\"group\":\"demo\",\"param\":{\"globalSettings\":{\"showLegends\":false,\"legendPosition\":\"bottom center\"}}}");

    String xml = XML.toString(json);
    System.out.println(xml);

现在在上面的例子中,我想要在 xml 中包含一个 json,因为它在里面。而现在在 globalSettings 中为 showLegends 和 legendPosition 创建了各种元素。

当前 XML 如下:

<name>Customer Analysis</name>
<id>9568</id>
<group>demo</group>
<param>
  <globalSettings>
     <showLegends>false</showLegends>
     <legendPosition>bottom center</legendPosition>
  </globalSettings>
</param>

预期的 XML 应如下所示:

<name>Customer Analysis</name>
<id>9568</id>
<group>demo</group>
<param>
  <globalSettings>
     {"showLegends":false,"legendPosition":"bottom center"}
  </globalSettings>
</param>

我该如何处理这个问题?

最佳答案

我认为您需要在转换之前调整 JSON。 你能试试下面这个吗?

String json = "{\n" +
        "   \"user\": \"gerry\",\n" +
        "   \"likes\": [1, 2, 4],\n" +
        "   \"followers\": {\n" +
        "      \"options\": {\n" +
        "        \"key1\": \"a\",\n" +
        "        \"key2\": \"b\"\n" +
        "      }        \n" +
        "   }\n" +
        "}";

JSONObject jsonObject = new JSONObject(json);
JSONObject followers = jsonObject.getJSONObject("followers");

String options = followers.optString("options");
followers.put("options", options);

String s = XML.toString(jsonObject);
System.out.println(XML.unescape(s));

结果:

<followers><options>{"key1":"a","key2":"b"}</options></followers><user>gerry</user><likes>[1,2,4]</likes>


额外问题:

What if I don't want options as an xml element and it should be part of json?

String json = "{\n" +
        "   \"user\": \"gerry\",\n" +
        "   \"likes\": [1, 2, 4],\n" +
        "   \"followers\": {\n" +
        "      \"options\": {\n" +
        "        \"key1\": \"a\",\n" +
        "        \"key2\": \"b\"\n" +
        "      }        \n" +
        "   }\n" +
        "}";

JSONObject jsonObject = new JSONObject(json);
jsonObject.put("followers", jsonObject.optString("followers"));

// org.json 20180813
String s = XML.toString(jsonObject);
System.out.println(XML.unescape(s));

结果:

<followers>{"options":{"key1":"a","key2":"b"}}</followers><user>gerry</user><likes>1</likes><likes>2</likes><likes>4</likes>

关于java - 忽略 JSON 到 XML 转换中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55921113/

相关文章:

java - DFS树遍历函数修改

java - Spring:将@RequestBody 注入(inject)@Bean

Java 发生在关系 invokeAndWait 之前

swift 3传递数组中的Json

使用 XSLT 进行 XML 到 XML 转换 - 循环子节点

java - 未执行客户端证书身份验证的 wildfly 10 自定义登录模块

json - 使用 Dapper ORM (.NET Core) 将 JSON 插入 PostgreSQL 数据库

javascript - JSON 是否应该包含空值

java - 使用 JAXB 和 XMLStreamReader 高效地解码大型 xml 文件的一部分

css - 如何样式化xml文件?使用 xslt 从 xml 到 html 并使用 css 设置 html 的样式