物联网全栈工程师学习笔记之JSON学习二

内容接上一节《物联网全栈工程师学习笔记之JSON学习一》
八、JSON的语法
JSON的语法衍生于JavaScript对象标记语法:

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号容纳对象
  • 方括号容纳数组

8.1JSON名称/值对
8.1.1 JSON数据的书写格式是:key/value(健/值)对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

 - “name”:”Huawei_IoT” 
 - “deviceCode”:”123456789”

等价于这条JavaScript语句:

 - name = “Huawei_IoT”
 - deviceCode:”123456789”

8.1.2 JSON值类型

JSON数据值类型可以是以下内容:

  • 数字(整数或浮点)

  • 字符串(在双引号中)

  • 逻辑值(true或false)

  • 数组(在中括号中)

  • 对象(在大括号中)

  • Null
    8.1.2.1 JSON数字、布尔和null类型

  • JSON数字可以是整数型或者浮点型:

     {“age”:30}
    
  • JSON布尔值可以是true或者false:

     {“flag”:true}
    
  • JSON可以设置null值:

     {“runoob”:null}
    

8.1.2.2 JSON对象类型
JSON对象在大括号({})中书写,对象可以包含多个key/value(健/值)对:

 {
     "dataname":"humidity","value":40,"abnormity":0}

对象类型与JavaScript语句等价:

dataName = “humidity”
Value = 40
Abnormity = 0

key必须是字符串,value可以是合法的JSON数据类型(字符串、数字、对象、数组、布尔值或null).

  • Key和value中使用冒号(:)分割。
  • 每个key/value对使用逗号(,)分割。
    8.1.2.3 JSON对象访问
    你可以使用点号(.)来访问对象的值:
Var myObj,x;
myObj = {
     "dataname":"humidity","value":40,"abnormity":0};
X = myObj.dataname;

你也可以使用括号([])来访问对象的值:

Var myObj,x;
myObj = {
     "dataname":"humidity","value":40,"abnormity":0};
X = myObj[“dataname”];

8.1.2.4 JSON循环对象
你可以使用for-in来循环对象的属性:

Var myObj = {
     “name”:”runoob”,”alexa”:10000,”site”:null};
For(x in myObj){
     
Document.getElementById(“demo”).innerHTML+=x+”<br>;
}

在for-in循环对象的属性时,使用中括号([])来访问属性的值:

Var myObj = {
     “name”:”runoob”,”alexa”:10000,”site”:null};
For(x in myObj){
     
Document.getElementById(“demo”).innerHTML+=myObj[x]+”<br>;
}

8.1.3 JSON对象的嵌套
JSON对象中可以包含另外一个JSON对象:

 myObj = {
     
	"name":"runoob",
	"alexa":10000,
	"sites":{
     
		"site1":"www.baidu.com",
		"site2":"m.baidu.com",
		"site3":"http.baidu.com",
	}
}

可以使用点号(.)或者中括号([])来访问嵌套的JSON对象:

X=myObj.sites.site1;

或者

X = myObj.sites[“site1”];

8.1.4 JSON对象的修改和删除
你可以使用点号(.)来修改JSON对象的值:

MyObj.sites.site1=”www.google.com”;

你可以使用中括号([])来修改JSON对象的值:

MyObj.sites[“site1”]=”www.google.com”;

可以使用关键字delete来删除JSON对象的属性:

Delete myObj.sites.site1;

8.1.5 JSON 数组类型
JSON数组在中括号([])中书写,数组可以包含多个对象:

{
     "timestamp":1526266000,"content":
			[{
     "dataname":"humidity","value":40,"abnormity":0},
			 {
     "dataname":"temperature","value":"25.5℃","abnormity":0},
			 {
     "dataname":"luminance","value":276,"abnormity":0}
			]
		}

上面的例子中,数组”content”是包含三个对象的数组,每个对象代表一条关于某种传感器数据的记录。
8.1.6 JSON数组访问
8.1.7 JSON数组嵌套
8.1.8JSON数组嵌套访问
8.2 JSON的使用
因为JSON使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的JSON。通过JavaScript可以创建一个对象数组,并像这样进行赋值:

Var multiSensor = {
     "timestamp":1526266000,"content":
			[{
     "dataname":"humidity","value":40,"abnormity":0},
			 {
     "dataname":"temperature","value":"25.5℃","abnormity":0},
			 {
     "dataname":"luminance","value":276,"abnormity":0}
			]
		}

使用下标访问JavaScript对象数组中的第一项(索引从0开始):
multiSensory[1].content[0].dataname;
返回的内容是:humidity
8.3 JSON和XML的比较
8.3.1相同之处

  • JSON是纯文本
  • JSON具有自我描述性(人类可读)
  • JSON具有层级结构(值中存在值)
  • JSON可通过JavaScript进行解析
    JSON数据可使用AJAX进行传输

8.3.2不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的JavaScript eval()方法进行解析
  • 使用数组
  • 不使用保留字
    8.4JSON常见的开源库
    物联网全栈工程师学习笔记之JSON学习二_第1张图片物联网全栈工程师学习笔记之JSON学习二_第2张图片
    物联网全栈工程师学习笔记之JSON学习二_第3张图片
    物联网全栈工程师学习笔记之JSON学习二_第4张图片

你可能感兴趣的:(json)