Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml JSON根元素_Xml_Json - Fatal编程技术网

Xml JSON根元素

Xml JSON根元素,xml,json,Xml,Json,JSON是否需要一个根元素(如XML中的情况)。据我所知,这是一个有效的JSON字符串 { "email":[ { "type":"home", "name":"john.doe@gmail.com" }, { "type":"work", "name":"jdoe@gmail.com" } ] } 我需要将JSON转换

JSON是否需要一个根元素(如XML中的情况)。据我所知,这是一个有效的JSON字符串

{
    "email":[
        {
            "type":"home",
            "name":"john.doe@gmail.com"
        },
        {
            "type":"work",
            "name":"jdoe@gmail.com"
        }
    ]
}

我需要将JSON转换为XML,反之亦然。然而,尽管上面的JSON在我将其转换为XML时是有效的,但它是无效的吗?我是遗漏了什么还是这很正常?

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

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


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

根据JSON数据结构根元素右侧窗格中修改的Backus Naur表单,可以是这七种类型/值中的任何一种:

Object
Array
String
Number
true
false
null
例子 因此,以下所有示例都是有效的JSON根元素:

{
  "name": "Jpsy",
  "age": 99
}

您正在使用哪个库进行转换,它显示了什么错误?您对此有规范参考吗?我在任何地方都无法证实这一点。看起来任何格式正确的元素(数组、对象、字符串、数字等)在技术上都是有效的JSON根元素,尽管前两个是唯一可以有子元素的元素。实际上有两种不同的JSON规范。RFC4627要求JSON文本是对象或数组。ECMA-262,第5版,第15.12节没有施加此限制。似乎已经删除了此限制,现在允许任何值作为“根”。不幸的是,json.org上的规范首先导致了此问题,因为它没有说明语法中哪些构造被允许作为顶级产品。简短的规范很好(另请参见XPath 1.0),但通常会留下一些含糊不清的地方,以后必须加以解决。
[ 1, 2, "three", 4, 5 ]
"abcdefg"
123.45
true
false
null