它只是内置工具吗?从根本上说,格式不会自动编组xml。
xml和json之间唯一的区别是[tag] HI World [/ tag]到{tag:HI World} ..所以JSON obj是一半大小
正确?
答案 0 :(得分:1)
这不一定容易。完整的JSON解析器实现可能与XML文档的实现一样复杂。 当然,由于显而易见的原因,JSON字符串的大小几乎总是小于它的XML等价物。
但是,在XML中将JSON作为数据传输格式进行选择取决于底层技术(JavaScript到JavaScript或服务器,或者相反)。 在其他情况下,例如,当您的数据已经作为XML存在时,将它转换为JSON的效率并不高,因此您可以将其发送到某个地方(到REST服务或其他任何地方)。
因此,这是一个简单的选择:选择您正在使用的技术所支持的最佳选择。 JSON,用于处理来自JavaScript和XML的SOAP Web服务,或者当您的数据已经是XML时。
答案 1 :(得分:1)
JSON的根源在于Javascript,这是一种带有松散输入的动态语言。每个数据项都是“松散类型”,这意味着运行时系统并不关心事物是字符串,数组,整数,对象还是函数。变量持有“某些东西”,当你尝试用它们做某事时,确定类型。
因此,反序列化JSON数据包非常简单。要反序列化的表示形式是字符串或数字。
另一方面,使用XML,XML Schema标准列出了许多特定的数据类型,包括整数,浮点数,字符串等基本内容,还包括dateTime,date,然后是更复杂的派生类型,如有序序列那些东西,那些东西的阵列,以及“工会”。当定义这些XML内容时,在保证xml文档是一个良好的形式,并且b。)根据这些相当具体的模式定义之一有效时,需要付出很多努力。大多数xml序列化程序使用部分打字魔术。
在XML模式中,您还可以指定引用,以便XML文档中的一个项可以引用另一个项。
作为一个例子,现在当我使用stackexchange API查询特定用户发布的“问题答案”列表时,我找回了一个项目列表,每个项目包含同一用户的重复块。它们看起来都像这样(伪代码):
{ answers: [
{ answer_id: 98393398398
question_id 28282828
owner: {
name: Cheeso
user_id 48082
reputation: 3093
date_created: 110101010}
},
{ answer_id: 28783398398
question_id 111128828
owner: {
name: Cheeso
user_id 48082
reputation: 3093
date_created: 110101010}
},
...
] }
但XML允许我引用文档中的其他位置,所以我会得到类似这样的内容(再次,伪代码):
{ users: [ ["#user1", "Cheeso", "48082", 3093 ]] ,
answers: [
{ answer_id: 98393398398
question_id 28282828
owner: #user1 },
{ answer_id: 28783398398
question_id 111128828
owner: #user1},
...
] }
当然,您可以构建您的json应用程序以理解和使用“文档内引用”。但问题是,使用XML,这已经是模型的一部分。
所有这些意味着,在实践中,序列化和反序列化XML可能比使用JSON执行相同操作更具参与性。
我认为人们发现更宽松的json方法更为可取,因为它更灵活,适应性更强,更易于使用。另一方面,一些文档足够大,XML模式的刚性和形式非常有价值,json太松散了。我正在考虑一个OOXML文档。
答案 2 :(得分:1)
JSON提供了Javascript中使用的数据结构的序列化,这与许多编程语言中的数据结构非常相似。 XML是为文档标记而设计的。因此,JSON旨在匹配编程语言所擅长的,XML旨在满足文档创作的需要。
人们发现更宽松的json方法更受欢迎,因为它更灵活
恰恰相反。人们发现JSON更受欢迎,因为它不太灵活;它只能用Javascript等语言轻松处理。