写博客,记录生活——JSON的学习

首先要了解什么是JSON?

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,类似 XML。

JSON 比 XML 更小、更快,更易解析。
notation
英 [nəʊˈteɪʃn] 美 [noʊˈteɪʃn]
符号;(数学、科学和音乐中的)记号;谱号

和xml一样:
JSON 是纯文本
JSON 具有“自我描述性”(人类可读)

JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。

提示:XML也是一种传输数据的结构。
提示:JSON小巧的原因是它可以用更少的代码来表示相同的信息,传输起来也就自然更快。
提示:自我描述性表示我们人类读得懂的。

下面了解一下JSON的结构

JSON就是一串字符串 只不过元素会使用特定的符号标注。(主要的一共有四种符号)

{} 双括号表示对象

[] 中括号表示数组

“” 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

所以 {“name”: “Michael”} 可以理解为是一个包含name为Michael的对象

而[{“name”: “Michael”},{“name”: “Jerry”}]就表示包含两个对象的数组

JSON 与 JS 对象的关系

很多人搞不清楚 JSON 和 JS 对象的关系。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
就比如说:

1 var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的 
1 var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串 
// json在JavaScript中的实例
var txt = '{ "sites" : [' +
'{ "name":"百度" , "url":"www.baidu.com" },' +
'{ "name":"google" , "url":"www.djznrobot.com" },' +
'{ "name":"微博" , "url":"www.djznrobot.com" } ]}';

var obj = eval ("(" + txt + ")");

document.getElementById("name").innerHTML=obj.sites[0].name
document.getElementById("url").innerHTML=obj.sites[0].url

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误

或者理解成这是eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行

自己尝试小练习

下面展示一些 内联代码片

//练习代码
{
    "teacher":[{
        "chinese":"小李"
    },{
        "english":"小陈"
    },{
        "math":"老张"
    },{
        "chemistry":[{
            "name":"小郭"
        },{
            "phone_number":"86xxxxxx"
        },{
            "address":"beijing"
        }]
    }],
    "student":[
        {"number":40},
        {"rate":"1:2"},
        {"average_age":17},
        {"average_score":91}
    ]
}

本文适当掺杂别人的观点,如有不当之处,欢迎各位指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值