2012-05-03 56 views
17

JSON是否需要xml情况下的根元素。据我所知这是一个有效的JSON字符串。JSON根元素

{ 
    "email":[ 
     { 
      "type":"home", 
      "name":"[email protected]" 
     }, 
     { 
      "type":"work", 
      "name":"[email protected]" 
     } 
    ] 
} 

我需要将json转换为xml,反之亦然。然而,虽然上面是一个有效的JSON,当我将其转换为XML它不是有效的?我错过了什么,或者这是正常的?

+0

您正在使用哪个库进行转换,并显示哪个错误? –

回答

21

JSON文档的最外层级别是“对象”(大括号)或“数组”(方括号)。

任何将JSON转换为XML的软件必须协调它们是具有不同规则的不同数据模型的事实。不同的转换工具以不同的方式处理这些差异。

+2

你有这个规范的参考吗?我无法在任何地方验证。看起来,任何格式正确的元素(数组,对象,字符串,数字等)在技术上都是有效的JSON根元素,尽管前两个元素是唯一可以有子元素的元素。 – GrayWizardx

+7

实际上有两种不同的JSON规范。 RFC 4627要求JSON文本是对象或数组。 ECMA-262第5版第15.12节没有强加此限制。 –

+1

[RFC 7159,第2节“JSON语法”](https://tools.ietf.org/html/rfc7159#section-2)似乎删除了此限制,现在允许任何值作为“根”。 –

2

这是正常的,json和xml没有相同的规则。您可以将根部括号“{”和“}”转换为根元素以确保没有转换问题