CMS*_*CMS 226
基本上因为JSON本身是由JavaScript识别的,它实际上是轻量级,简约和高度可移植的,因为它只依赖于两个基本结构:
jcd*_*yer 136
在您开始将不同的命名空间模式混合在一起之前,XML并没有真正开始发挥作用.然后你看到JSON开始倒下,但是如果你只需要数据的序列化格式,那么JSON比XML更小,更轻,更人性化,并且通常比XML更快.
小智 61
我发现JSON相对于XML的一大好处是我不必决定如何格式化数据.正如一些人所表明的那样,有许多方法可以在XML中做简单的数据结构 - 作为元素,作为属性值等.然后你必须记录它,编写XML Schema或Relax NG或其他一些废话......它是一团糟.
XML可能有其优点,但对于基本数据交换,JSON更加紧凑和直接.作为Python开发人员,JSON和Python中的简单数据类型之间不存在阻抗不匹配.因此,如果我正在为一个询问特定滑雪胜地的雪况的AJAX查询编写服务器端处理程序,我会建立一个如下字典:
conditions = {
'new_snow_24': 5.0,
'new_snow_48': 8.5,
'base_depth': 88.0,
'comments': 'Deep and steep!',
'chains_required': True,
}
return simplejson.dumps(conditions) # Encode and dump `conditions` as a JSON string
Run Code Online (Sandbox Code Playgroud)
当通过JSON进行翻译时(使用像'simplejson'这样的Python库),生成的JSON结构看起来几乎相同(除了在JSON中,布尔值更低).
解码该结构只需要一个JSON解析器,无论是针对本机iPhone应用程序的Javascript还是Objective-C,还是C#或Python客户端.浮点数将被解释为浮点数,字符串被解释为字符串,而布尔值则被解释为布尔值.使用Python中的'simplejson'库,一个simplejson.loads(some_json_string)语句会给我一个完整的数据结构,就像我在上面的例子中所做的那样.
如果我写XML,我必须决定是否做元素或属性.以下两个都是有效的:
<conditions>
<new-snow-24>5</new-snow-24>
<new-snow-48>8.5</new-snow-48>
<chains-required>yes</chains-required>
<comments>deep and steep!</comments>
</conditions>
<conditions newSnow24="5" newSnow48="8.5" chainsRequired="yes">
<comments>deep and steep!</comments>
</conditions>
Run Code Online (Sandbox Code Playgroud)
因此,我不仅要考虑我可能想要发送给客户端的数据,我还要考虑如何格式化它.XML虽然比简单的SGML更简单,但是通过更严格的规则,仍然提供了太多的方法来思考这些数据.然后我将不得不去生成它.我不能只拿一个Python字典(或其他简单的数据结构)并说"自己动手做我的XML".我无法接收XML文档并立即说"不必编写自定义解析器",或者不需要XML Schema/Relax NG和其他此类痛苦的额外开销.
缺点是,将数据编码和解码为JSON更加容易和直接,特别是对于快速交换.这可能更适用于来自动态语言背景的人,因为内置于JavaScript/JSON的基本数据类型(列表,词典等)直接映射到Python,Perl,Ruby等中相同或相似的数据类型.
Ron*_*man 31
与XML相比,它是轻量级的.如果您需要扩展,请降低带宽要求!
比较JSON
[
{
color: "red",
value: "#f00"
},
{
color: "green",
value: "#0f0"
},
{
color: "blue",
value: "#00f"
},
{
color: "cyan",
value: "#0ff"
},
{
color: "magenta",
value: "#f0f"
},
{
color: "yellow",
value: "#ff0"
},
{
color: "black",
value: "#000"
}
]
Run Code Online (Sandbox Code Playgroud)
到XML:
<colors>
<color >
<name>red</name>
<value>#f00</value>
</color>
<color >
<name>green</name>
<value>#0f0</value>
</color>
<color >
<name>blue</name>
<value>#00f</value>
</color>
<color >
<name>cyan</name>
<value>#0ff</value>
</color>
<color >
<name>magenta</name>
<value>#f0f</value>
</color>
<color >
<name>yellow</name>
<value>#ff0</value>
</color>
<color >
<name>black</name>
<value>#000</value>
</color>
</colors>
Run Code Online (Sandbox Code Playgroud)
Nat*_*e B 28
只是我个人经历的轶事:
我编写了一个小的Javascript目录,首先使用XML格式的数据,然后对其进行调整以使用JSON,这样我就能并排运行它们并与Firebug进行速度比较.JSON最终快了大约3倍(350-400 ms与1200-1300 ms以显示所有数据).此外,正如其他人所指出的那样,JSON在眼睛上更容易,并且由于更精简的标记,文件大小减小了25%.
小智 20
<colors>
<color name='red' value='#f00'/>
<color name='green' value='#0f0'/>
<color name='blue' value='#00f'/>
<color name='cyan' value='#0ff'/>
<color name='magenta' value='#f0f'/>
<color name='yellow' value='#ff0'/>
<color name='black' value='#000'/>
</colors>
Run Code Online (Sandbox Code Playgroud)
使用属性,XML很不错.但由于某种原因,自制的XML通常100%由元素组成,而且很难看.
Xin*_*nus 18
JavaScript轻松消费可能是原因之一..
Joy*_*tta 10
JSON最适合从Web服务中获取Web应用程序中的数据,因为它的大小和易用性,特别是由于JavaScript中的内置支持.想象一下,与JSON中的即时查找相比,解析xml片段的计算开销.
一个很好的例子是JSON-P.您可以从回调函数调用中包含的Web服务中获取数据,例如my_callback({"color": "blue", "shape":"square"});在动态生成的<script>标记内,以便可以在函数中直接使用数据my_callback().使用XML无法接近这种便利.
XML将是大型文档的首选格式,您可以使用XSLT以多种格式呈现数据页面.XML还可以与应用程序配置文件一起使用,以便在许多其他用途中使用.
这里没有人提到XML的主要优势:验证规则(DTD,XSD).我的结论,使用了两个:
当然,正在开发json-schema,但你不会在任何地方找到它的内置支持.
我是两者的狂热者,他们有不同的优势.
既然大多数语言都有JSON编码器和解码器,那么没有理由不将JSON用于有意义的用途(这可能是XML的90%用例).
我甚至听说过在大型SQL数据库中使用JSON字符串来简化架构更改.
JSON与JavaScript编程没有阻抗不匹配.JSON可以包含整数,字符串,列表,数组.XML只是元素和节点,需要在被消耗之前解析为整数等等.
| 归档时间: |
|
| 查看次数: |
22867 次 |
| 最近记录: |