我有一个XML结构,我希望使用JavaScript以JSON格式构建它-如果可能的话,最好一直使用点表示法。:)
以下是XML-请注意,为了简单起见,这是一个伪结构!:)
<Items>
<Item>
<Name>Item 1</Name>
<SubItems>
<Item>
<Name>Sub Item 1</Name>
</Item>
</SubItems>
</Item>
<Item>
<Name>Item 2</Name>
</Item>
</Items>
因此,当我(在服务器上)将JSON转换为XML时,输出应该如上所述。
我需要帮助开始做这件事。我在谷歌上搜索了一下,找不到任何关于如何做到这一点的例子。
提前感谢!
编辑:我正在使用NewtonSoft JSON for.NET将JSON转换为XML!
第2版:好的,我找到了原始JSON结构,可以正确地转换为XML-现在是:
var json = {
"Items":
{
"Item":
[
{
"Name": "Test 1" ,
"SubItems":
{
"Item":
[
{
"Name":"Test 1"
},
{
"Name":"Test 2"
}
]
}
},
{
"Name":"Test 2"
}
]
}
};
这将产生与上面定义的完全相同的XML结构。
现在,我该如何使用点表示法构建这个结构呢
编辑3:在Nikhil&Darin,我想明白了,但这只是回答了一个伪问题。但是,我将标记为已回答,并创建一个新问题。:)
第4版:我把我的分机贴到了标记的答案上。:)
这应该做到:
var items = [
{"name":"Item 1","subitems":[
{"name":"Subitem 1"}
]},
{"name":"Item 2"}
];
var items = [ ];
var item1 = { };
item1.Name = 'Item 1';
item1.SubItems = [ ];
var subItem = { };
subItem.Name = 'Sub Item 1';
item1.SubItems.push(subItem);
items.push(item1);
var item2 = { };
item2.Name = 'Item 2';
items.push(item2);
var json = {};
json.Items = {};
json.Items.Item = new Array();
var item1 = {};
item1.Name = "Test 1"
item1.SubItems = new Array();
var subItem1 = {};
subItem1.Item = new Array();
subSubItem1 = {};
subSubItem1.Name = "Test 1";
subSubItem2 = {};
subSubItem2.Name = "Test 2";
subItem1.Item.push(subSubItem1);
subItem1.Item.push(subSubItem2);
item1.SubItems.push(subItem1);
var item2 = {};
item2.Name = "Test 2";
json.Items.Item.push(item1);
json.Items.Item.push(item2);
上述代码的输出为
{
"Items": {
"Item": [
{
"Name": "Test 1",
"SubItems": [
{
"Item": [
{
"Name": "Test 1"
},
{
"Name": "Test 2"
}
]
}
]
},
{
"Name": "Test 2"
}
]
}
}
应该这样做:)
Nikhil回答了这个问题,并得到了神奇的勾号。:)-我用我写的代码来扩展他的答案,以获得我想要的结果。
在收到伪问题的答案后,我真正的问题是,我的结构中有不同的项类型,它们都共享Items根节点。
下面是我如何解决这个问题的一个伪例子。同样,Nikhil的答案是解决方案的基础,这要归功于他:)
假设我们有一个根节点,水果,我们有不同类型的水果。比方说,苹果和香蕉。
以下是我如何获得JSON结构(以及最终所需的XML转换输出):
// Create the JSON Object
var json = {};
// Create the Fruits Objects (Our root)
json.Fruits = {};
for (var i = 0; i < 3; i++){
// Pseudo condition
if (i == 0 || i == 1) {
// Make sure we have an Apple array
if(json.Fruits.Apple == undefined)
json.Fruits.Apple = [];
json.Fruits.Apple.push({
"Color": "Green"
});
} else {
// Make sure we have a Banana array
if (json.Fruits.Banana == undefined)
json.Fruits.Banana = [];
json.Fruits.Banana.push({
"Color": "Yellow"
});
}
}
这将输出以下JSON:
{"Fruits":
{"Apple":
[
{"Color":"Green"},
{"Color":"Green"}
],
"Banana":
[
{"Color":"Yellow"}
]
}
}
最终,以下XML:
<Fruits>
<Apple>
<Color>Green</Color>
</Apple>
<Apple>
<Color>Green</Color>
</Apple>
<Banana>
<Color>Yellow</Color>
</Banana>
</Fruits>