JavaScript:如何声明两个名称相同但属性不同的对象

时间:2018-08-16 11:01:08

标签: javascript xml javascript-objects

我正在研究node.js中的功能,该功能创建JS对象,然后将其转换为XML。 xml格式模板要求具有两个名称相同但值不同的属性,例如:

<?xml version="1.0" encoding="utf-8"?>
<XMLExample>

<Person id="123ok" type="student">
<searchable>true</searchable>
<valid>true</valid> 
</Person>

<Person name="Aiana" type="student" parentPersonId="123ok">
<lastName>Ali</lastName>
<grade>9</grade>
<gradYear>2020</gradYear>
</Person>

</XMLExample>

问题是如何在另一个对象中设置两个相同名称的“ Person” JS对象?

var futureXMLObject = {
      "Person": {
      "@id": "123ok",
      "@type": "student"
       ...
      }
    }

    "Person": {
     "@name": "Aiana",
     "@type": "student",
     "@parentPersonId": "123ok"
     ...
    }
  }

3 个答案:

答案 0 :(得分:1)

这是不可能的。您将如何访问对象中的对象? futureXMLObject['Person']无法正常工作,因为它无法返回两个对象。

您是否考虑过使用数组?

var futureXMLObj = {
    "Persons": [
        {
            "@id": "123ok",
            "@type": "student"
        },
        {
            "@name": "Aiana",
            "@type": "student",
            "@parentPersonId": "123ok"
        }
    ]
};

答案 1 :(得分:0)

听起来像是一个对象数组,而不只是一个对象...

答案 2 :(得分:0)

您不能这样做,但可以使用Array个对象

var futureXMLObject = {
  "Person": [
    {
      "@id": "123ok",
      "@type": "student"
     },
     {
       "@name": "Aiana",
       "@type": "student",
     }
   ]
}
for (var person of futureXMLObject['Person']) {
  console.log(person);
}