您现在的位置: 365建站网 > 365文章 > JSON数组 JSON对象 jsonArray与 jsonObject区别

JSON数组 JSON对象 jsonArray与 jsonObject区别

文章来源:365jz.com     点击数:564    更新时间:2018-05-31 19:56   参与评论

JSON 语法规则

</>code

  1. JSON 语法是 javascript 对象表示语法的子集。
  2. 数据在名称/值对中
  3. 数据由逗号分隔
  4. 花括号保存对象
  5. 方括号保存数组

JSON 名称/值对

</>code

  1. JSON 数据的书写格式是:名称/值对。
  2. 名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
  3. "firstName":"John"

JSON 值

</>code

  1. JSON 值可以是:
  2. 数字(整数或浮点数)
  3. 字符串(在双引号中)
  4. 逻辑值(truefalse
  5. 数组(在方括号中)
  6. 对象(在花括号中)
  7. null

JSON正常就是由对象和数组组成,对象使用对象的方法来进行操作。数组使用数组的方法来进行操作。

数组

</>code

  1. var ourcountry=[["北京市"],["上海市"],["合肥市","芜湖市","蚌埠市"]]; // 数组
  2. alert(ourcountry[2][1]);

JSON对象

</>code

  1. var status_process = {
  2. " name5" : '闲置期',
  3. "name1" : '播种期',
  4. "name2" : '苗期',
  5. "name3" : '生长期',
  6. "name4" : '采收期'
  7. }
  8. alert(status_process["name5"]);
  9. alert(status_process.name5);
  10. // 两个都为:闲置期

JSON字符串

所谓json字符串,是指该字符串变量的值与json的格式相同,但是不是json对象,比如:

</>code

  1. var s1="{";
  2. var s2 = " 'name5' : '闲置期', 'name1' : '播种期','name2' : '苗期','name3' : '生长期','name4' : '采收期'";
  3. var s3="}";
  4. var status_process=s1+s2+s3;

JSON数组遍历

</>code

  1. packJson = [
  2. {"name":"zhang", "password":"123"},
  3. {"name":"li", "password":"456"}
  4. ];
  5. for(var p in packJson){//遍历json数组时,这么写p为索引,0,1
  6. alert(packJson[p].name + " " + packJson[p].password);
  7. }
  8. // 或者
  9. for(var i = 0; i < packJson.length; i++){
  10. alert(packJson[i].name + " " + packJson[i].password);
  11. }

JSON数组的操作

1.定义

</>code

  1. var josnArry=[];

2.添加

</>code

  1. jsonArry.push(jsonObj);

3.删除

</>code

  1. delete jsonArry[0];
  2. splice(index,length):

4.循环访问数组

a.jquery

</>code

  1. $.each(jsonArry,function(index,item){
  2. var userId=item.userId;
  3. });

b.一般方式

</>code

  1. for(var i=0;i<jsonArry.length;i++)
  2. {
  3. var userId=jsonArry[i].userId;
  4. }

c.特殊方法

</>code

  1. for(var item in jsonArry)
  2. {
  3. var userId=jsonArry[item].userId;//注意:此处的item不是数组项,而是数组项的索引
  4. }

JSON对象遍历

</>code

  1. myJson = {"name":"ji", "password":"123"};
  2. for(var p in myJson){//遍历json对象的每个key/value对,p为key
  3. alert(p + " " + myJson[p]);
  4. }

字符串和json对象和json对象数组相互转换

</>code

  1. var jsonStr = "{\"userId\":\"001\"}"; // json对象字符串
  2. var jsonArryStr = "[{\"userId\":\"001\"},{\"userId\":\"002\"}]"; // json数组字符串
  3. var jsonObj = JSON.parse(jsonStr); // 字符串转为json对象
  4. var jsonArry = JSON.parse(jsonArryStr); // 字符串转为json数组
  5. var jsonStr = JSON.stringify(jsonObj); // json对象转为字符串
  6. var jsonArryStr=JSON.stringify(jsonArry);// json数组转为字符串
  7. alert(jsonStr);
  8. alert(jsonArryStr);
  9. alert(jsonObj.userId);
  10. alert(jsonArry[0]['userId']);

tips:

只有数组或者json数组才可以使用length方法。json对象使用length方法无效。

如果json对象的子元素是数组或者json数组,也可以使用length方法。可以用于遍历数据。
 

一、JSONObject和JSONArray的数据表示形式

JSONObject的数据是用 {  } 来表示的,

        例如:   { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null  }  

而JSONArray,顾名思义是由JSONObject构成的数组,用  [ { } , { } , ......  , { } ]  来表示

       例如:   [ {  "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" }  ,  {  "content" : null, "beginTime" : 1398873600000  "endTime" } ] ; 

        表示了包含2个JSONObject的JSONArray。

可以看到一个很明显的区别,一个最外面用的是 {  }  ,一个最外面用的是 [  ]  ;

 

JavaScript解析JSON

** 
解析json数组即对JSONArray的遍历

一、对于标准的json数组如:

</>code

  1. var result=[{"flag":1,"macId":"2","mbId":0,"userName":"XXX"},{"flag":1,"macId":"1","mbId":1,"userName":"YYY"}];

</>code

进行遍历的时候,可以直接通过for循环遍历这个数组,有两种方法

</>code

  1. 1.

</>code

  1. for (var i = 0; i < result.length; i++) {
  2. //result[i]表示获得第i个json对象即JSONObject
  3. //result[i]通过.字段名称即可获得指定字段的值
  4. result[i].userName;
  5. }

 

</>code

  1. 2.

</>code

  1. for(var i in result){
  2. //表示遍历数组,而i表示的是数组的下标值,
  3. //result[i]表示获得第i个json对象即JSONObject
  4. //result[i]通过.字段名称即可获得指定字段的值
  5. result[i].userName;
  6. }

 

二、对于不标准的json数组如:

</>code

  1. var result={"datas":[{"flag":1,"macId":"2","mbId":0,"userName":"XXX"},{"flag":1,"macId":"1","mbId":1,"userName":"YYY"}]};

 

进行遍历之前得先解析出标准的json数组格式即[{},{}]

</>code

  1. var data= result.datas;

</>code

  1. 1.

</>code

  1. for (var i = 0; i < data.length; i++) {
  2. //data[i]表示获得第i个json对象即JSONObject
  3. //data[i]通过.字段名称即可获得指定字段的值
  4. data[i].userName;
  5. }

 

</>code

  1. 2.

</>code

  1. for(var i in data){
  2. //表示遍历数组,而i表示的是数组的下标值,
  3. //data[i]表示获得第i个json对象即JSONObject
  4. //data[i]通过.字段名称即可获得指定字段的值
  5. data[i].userName;
  6. }

**

注意点:eval()方法的作用

** 
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 
1. 一种为使用eval()函数。 
2. 使用Function对象来进行返回解析

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (564人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号