JSON 语法规则

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

JSON 名称/值对

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

JSON 值

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

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

数组

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

JSON对象

  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对象,比如:

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

JSON数组遍历

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

JSON数组的操作

1.定义

var josnArry=[];

2.添加

jsonArry.push(jsonObj);

3.删除

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

4.循环访问数组

a.jquery

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

b.一般方式

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

c.特殊方法

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

JSON对象遍历

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

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

  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']);

提示:

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

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

JSON语法、对象、遍历数组的区别和基本操作的更多相关文章

  1. JSON数组,JSON对象,数组的区别与基本操作整理

    JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是: ...

  2. js Json与对象、数组转化

    对象.数组转json json = JSON.stringify(obj) json 转对象.数组 arr = JSON.parse(json)

  3. 浅析PHP中for与foreach两个循环结构遍历数组的区别

    遍历一个数组是编程中最常见不过的了,这里跟大家讨论下for和foreach两种方法.用这两种方法执行遍历的场景太多太多了,这里我们只针对以下两个数组作为例子来讨论.所谓管中窥豹,多少能理清一点两者的区 ...

  4. 深度理解PHP中for与foreach两个循环结构遍历数组的区别

    遍历一个数组是编程中最常见不过的了,这里讨论下for和foreach两种方法: 首先,我们先准备两个用于遍历的数组: $arr1=array(1=>'a', 3=>22, 5=>'b ...

  5. 用递归将嵌套的JSON对象遍历出来,转为二维数组

    如题所示,代码如下: var arJsonNesting = [{id:1,name:"zhang3" ,children:[{id:2,name:"zhang33&qu ...

  6. 遍历数组,对象和JSON

    遍历数组 var arr2 = [3,4,5,6,7,8]; //第一种方法 for(var i =0;i<arr.length;i++){ console.log(arr2[i]); } // ...

  7. js遍历数组和遍历对象的区别

    <script> //----------------for用来遍历数组对象-- var i,myArr = [1,2,3]; for (var i = 0; i < myArr.l ...

  8. vue遍历数组和对象的方法以及他们之间的区别

    前言:vue不能直接通过下标的形式来添加数据,vue也不能直接向对象中插值,因为那样即使能插入值,页面也不会重新渲染数据 一,vue遍历数组   1,使用vue数组变异方法 pop() 删除数组最后一 ...

  9. jQuery遍历对象、数组、集合实例

    1.jquery 遍历对象 复制代码代码如下:   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...

随机推荐

  1. [WC2018]州区划分——FWT+DP+FST

    题目链接: [WC2018]州区划分 题目大意:给n个点的一个无向图,点有点权,要求将这n个点划分成若干个部分,每部分合法当且仅当这部分中所有点之间的边不能构成欧拉回路.对于一种划分方案,第i个部分的 ...

  2. 基准对象object中的基础类型----元组 (五)

    object有如下子类: CLASSES object basestring str unicode buffer bytearray classmethod complex dict enumera ...

  3. D. Flood Fill 区间DP 或lcs匹配

    题意 给定一串数字 相同的连续的数字可以同时 转换成一个相同数字 问最小几次可以全部转换成一个相同的数字 法1:区间dp  dp[l][r][0/1]  0表示l r区间转化成和最左边相同需要多少次 ...

  4. scrapy入门与进阶

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  5. CH2601 电路维修(算竞进阶习题)

    01边bfs 这题很容易想到的就是根据符号的情况建图,把每个点方格的对角线看成图的节点,有线相连就是边权就是0,没有就是1 然后跑最短路,但是最短路用的优先队列维护是有logn的代价的 这题还有一个更 ...

  6. FPGA笔试题集锦(血的教训)

    1.名词解释: FPGA:现场可编程门阵列,一般工艺SRAM(易失性),所以要外挂配置芯片. CPLD:复杂可编程逻辑器件,一般工艺Flash(不易失). ASIC:专用集成电路 SOC:片上系统 S ...

  7. Data truncation: Data too long for column 'content' at row 1

    项目运行报错: Data truncation: Data too long for column 'content' at row 1 是由于字段长度太小导致的 搜索mysql 中text 字段长度 ...

  8. 08 Zabbix4.0系统配置事件通知 - 动作Action

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 08 Zabbix4.0系统配置事件通知 - 动作Action 请点击查看Zabbix3.0.8版 ...

  9. Luogu P5285 / LOJ3050 【[十二省联考2019]骗分过样例】

    伪提答害死人...(出题人赶快出来挨打!!!) 虽说是考场上全看出来是让干嘛了,然而由于太菜以及不会打表所以GG了,只拿了\(39\)... 经测试,截至\(2019.4.18-11:33\),这份接 ...

  10. MVC使用记录

    如何获得MVC中,控制器和方法名字.这可以用于给当前选定菜单加个选定样式 获取控制器名称:(在View中写法) ViewContext.RouteData.Values["controlle ...