我是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并不总是可用。有时它们也可能是空的。
有人可以帮我解决这个问题吗。
答案 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>