JSON详解

1,199 阅读2分钟

一、陈述(什么是JSON)

1:JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。不是一种编程语言。
2:JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”

二、问与答

1:JSON里有几种数据形式?

{}(末尾不能有逗号)、[](末尾不能有逗号)、字符串(只能是双引号,单引号会报错)、null、数字、true、false

2:JSON和js中的对象有什么关系?

一个JSON一定可以转成一个合法对象,但是一个对象不一定能转成一个合法的JSON。(对象>JSON)

3:为什么JSON和js相像?

JSON就是照着js中的对象设计的(凡是可以用js里的方法JSON.parse()合法转成js对象不报错的,都是一个合法的json)
转化方法:
    JSON.parse(jsonstr); //可以将json字符串转换成json对象 
    JSON.stringify(jsonobj); //可以将json对象转换成json自符串 

三、对比(与XML对比)

优点:

1:JSON 与 XML 相比的一大优点就是它更加简单

由于不需要有与开始标签(opening tag)匹配的结束标签(closing tag),因此传送相同的信息所需的字节数大大降低了。创始人 Corockford 将其称之为“XML 的减肥方案”)
举例:
使用XML标识

<comments>
<comment>
<id>1</id>
<author>someone1</author>
<url>http://someone1.x2design.net</url>
<content>hello</content>
</comment>
<comment>
<id>2</id>
<author>someone2</author>
<url>http://someone2.x2design.net</url>
<content>someone1</content>
</comment>
<comment>
<id>3</id>
<author>someone3</author>
<url>http://someone3.x2design.net</url>
<content>hello</content>
</comment>
</comments>
    使用JSON表示:
    {
        comments:[
            {
                id:1,
                author:"someone1",
                url:"http://someone1.x2design.net",
                content:"hello"
            },
            {
                id:2,
                author:"someone2",
                url:"http://someone2.x2design.net",
                content:"hello"
            },
            {
                id:3,
                author:"someone3",
                url:"http://someone3.x2design.net",
                content:"hello"
            }
        ]
        
    };

2:减少了解析XML解析带来的性能问题和兼容性问题

3:可读性好。对于javascript来说非常容易使用,可以方便的通过遍历数组以及访问对象属性 来获取数据,其可读性也不错,基本具备了结构化数据的性质

4:跨域可行性。

5:在Ajax应用中,服务器直接生成javascript语句,客户端获取后直接用eval方法来获得这个对象,这样就可以省去解析XML的性能损失。 同时,在javascript通信中使用JSON作为数据格式的好处很明显,可以立即获得数据的值,因此可以更快的访问其中包含的数据。 在javascript中花括号也是一个语句。要让解析器知道这个花括号表示的是一个对象而非一个语句的唯一方法是能否找到封装它的圆括号 (它是用来说明代码是一个表达式而非一个语句)

举例:
  var oCarInfo = eval("(" + sJSON + ")");