如何通过JavaScript在JSON中构建此XML结构?

如何通过JavaScript在JSON中构建此XML结构?,javascript,.net,xml,json,json.net,Javascript,.net,Xml,Json,Json.net,我有一个XML结构,我希望使用JavaScript以JSON格式构建它——如果可能的话,最好使用点符号 这是XML-注意这是一个伪结构,为了保持简单!: <Items> <Item> <Name>Item 1</Name> <SubItems> <Item> <Name>Sub Item 1</Name> <

我有一个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>
这将产生与上面定义的完全相同的XML结构

现在,我如何使用点符号来构建这个结构

编辑3:在Nikhil&Darin的帮助下,我找到了答案,但这只回答了伪问题。但是,我会将此标记为已回答,并创建一个新问题:

编辑4:我将我的扩展名张贴到标记的答案上:

这应该可以做到:

var items = [
              {"name":"Item 1","subitems":[
                {"name":"Subitem 1"}
              ]},
              {"name":"Item 2"}
            ];
这应该做到:

var items = [
              {"name":"Item 1","subitems":[
                {"name":"Subitem 1"}
              ]},
              {"name":"Item 2"}
            ];
上述代码的输出是

{
    "Items": {
        "Item": [
            {
                "Name": "Test 1",
                "SubItems": [
                    {
                        "Item": [
                            {
                                "Name": "Test 1"
                            },
                            {
                                "Name": "Test 2"
                            }
                        ]
                    }
                ]
            },
            {
                "Name": "Test 2"
            }
        ]
    }
}
这应该做到:

上述代码的输出是

{
    "Items": {
        "Item": [
            {
                "Name": "Test 1",
                "SubItems": [
                    {
                        "Item": [
                            {
                                "Name": "Test 1"
                            },
                            {
                                "Name": "Test 2"
                            }
                        ]
                    }
                ]
            },
            {
                "Name": "Test 2"
            }
        ]
    }
}

这就应该做到了:

尼科尔回答了这个问题,并得到了神奇的提示:我正在用我写的代码扩展他的答案,以得到我想要的结果

在收到伪问题的答案后,我真正的问题是,我的结构中有不同的项类型,它们都共享项根节点

下面是我如何解决这个问题的一个伪例子。同样,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" 
        });
    }
}
最后是以下XML:

<Fruits>
  <Apple>
    <Color>Green</Color> 
  </Apple>
  <Apple>
    <Color>Green</Color> 
  </Apple>
  <Banana>
    <Color>Yellow</Color> 
  </Banana>
</Fruits>

Nikhil回答了问题,并得到了神奇的答案:我正在用我写的代码扩展他的答案,以得到我想要的结果

在收到伪问题的答案后,我真正的问题是,我的结构中有不同的项类型,它们都共享项根节点

下面是我如何解决这个问题的一个伪例子。同样,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" 
        });
    }
}
最后是以下XML:

<Fruits>
  <Apple>
    <Color>Green</Color> 
  </Apple>
  <Apple>
    <Color>Green</Color> 
  </Apple>
  <Banana>
    <Color>Yellow</Color> 
  </Banana>
</Fruits>

您可以通过调用items[i].name来获取特定项的名称,其中i是该项的索引。类似地,子项的名称可以与项[i].subitems[j].name一起获取,这将在转换时生成完全相同的XML结构?那么,这一切都取决于你的服务器。例如,如果您使用的是RubyonRails之类的东西,那么您可以将对象呈现为XML或JSON,而不必担心呈现的具体工作方式。为了更好地理解您的问题,我必须查看服务器端代码。对不起,可能我不完全理解。是否要使用Javascript将JSON对象转换为XML?最初的google结果让我想到我正在使用NewtonSoft JSON将JSON转换为XML——我希望将JSON字符串发送到服务器,并在那里将其转换为XML。但是,输出结构必须与XML示例中指定的完全一致,这一点非常重要:您可以通过调用items[i].name来获取特定项的名称,其中i是该项的索引。类似地,子项的名称可以与项[i].subitems[j].name一起获取,这将在转换时生成完全相同的XML结构?那么,这一切都取决于你的服务器。例如,如果您使用的是RubyonRails之类的东西,那么您可以将对象呈现为XML或JSON,而不必担心呈现的具体工作方式。为了更好地理解您的问题,我必须查看服务器端代码。对不起,可能我不完全理解。是否要使用Javascript将JSON对象转换为XML?最初的google结果让我想到我正在使用NewtonSoft JSON将JSON转换为XML——我希望将JSON字符串发送到服务器,并在那里将其转换为XML。但是,输出结构必须与XML示例中指定的完全一致,这一点非常重要:啊,刚刚看到你的编辑。现在我知道你所说的动态是什么意思了;我这里的代码实际上是静态的。但我希望这会有帮助!接受,因为这确实回答了问题:如果您感兴趣,我会发布我的完整答案,但是您的答案会被标记为答案;啊,刚刚看到你的编辑。现在我知道你所说的动态是什么意思了;我这里的代码实际上是静态的。但我希望这会有帮助!接受,因为这确实回答了问题:如果您感兴趣,我会发布我的完整答案,但是您的答案会被标记为答案;