如何在java中将json对象转换为xml时删除数字键

时间:2017-06-27 13:20:36

标签: java json xml

我是JSON和XML的新手,我遇到了一个奇怪的问题,我现在几天都在努力解决这个问题。没有运气了。

有一个json对象作为String发送到我的程序。现在我需要将给定的字符串转换为json,然后转换为XML。我的输出应该是我转换的XML的字符串。

我能够将字符串转换为JSON,然后转换为XML而没有任何问题。下面的示例代码

org.json.JSONObject jsonFileObject = new org.json.JSONObject(json);
String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n<"+root+">" 
                 + org.json.XML.toString(jsonFileObject) + "</"+root+">";

但问题是json对象中的键很少是数字键,我们需要删除这些键。

示例JSON

{
"product": {
    "p1": true,
     "test": {
        "1000": [
        {
        "name": "name1",
        "id": "id1"
        }
                ],
        "2100": [
        {
        "name": "name2",
        "id": "id2"
        }
        ],
        "3200": [
        {
        "name": "name3",
        "id": "id3"
        }
        ],
        "8340": [
        {
        "name": "name4",
        "id": "id4"
        }
        ],
        "6200": [
        {
        "name": "name5",
        "id": "id5"
        }
        ]
    },
    "p2": "p2 test"
  }
}

在上面的例子中,我的输出应该是

<test/>

此处的名称和ID并不总是可用。有时它们也可能是空的。

有人可以帮我解决这个问题吗。

3 个答案:

答案 0 :(得分:0)

这听起来像是XSL转换的一个用例:https://en.wikipedia.org/wiki/XSLT

答案 1 :(得分:0)

首先,看起来你的JSON不能很好地解析。我会首先使用PARSE命令

var json = '{"test": [{"1000": [{"name": "name1", "id": "id1" }  ], "2100": [ { "name": "name2", "id": "id2" }] }]}';

var jsonFileObject = JSON.parse(json);

如果你可以解析它,那么作为一个对象很容易操纵它。例如,您可以循环遍历所有元素并删除,更改或任何内容,然后将其转换为XML。请参阅此参考:Filtering json object by key value

答案 2 :(得分:0)

此JSON可以转换为该XML。

<?xml version="1.0" encoding="UTF-8"?>
<product>
  <p1 boolean="true">true</p1>
  <test>
    <__GE__000 array="true">
      <name>name1</name>
      <id>id1</id>
    </__GE__000>
    <__GI__100 array="true">
      <name>name2</name>
      <id>id2</id>
    </__GI__100>
    <__GM__200 array="true">
      <name>name3</name>
      <id>id3</id>
    </__GM__200>
    <__HA__340 array="true">
      <name>name4</name>
      <id>id4</id>
    </__HA__340>
    <__GY__200 array="true">
      <name>name5</name>
      <id>id5</id>
    </__GY__200>
   </test>
  <p2>p2 test</p2>
</product>
相关问题