当前位置: 首页 > news >正文

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

JSON 语法规则

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

JSON 名称/值对

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

JSON 值

JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(truefalse)
数组(在方括号中)
对象(在花括号中)
null

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

数组

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

JSON对象

var status_process = {
                "name5" : '闲置期',
            "name1" : '播种期',
            "name2" : '苗期',
            "name3" : '生长期',
            "name4" : '采收期'
} 
alert(status_process["name5"]);
alert(status_process.name5);
// 两个都为:闲置期

JSON字符串

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

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

JSON数组遍历

packJson = [

        {"name":"zhang", "password":"123"},

        {"name":"li", "password":"456"}

];

for(var p in packJson){//遍历json数组时,这么写p为索引,0,1

    alert(packJson[p].name + " " + packJson[p].password);

}

// 或者
for(var i = 0; i < packJson.length; i++){

        alert(packJson[i].name + " " + packJson[i].password);
}

JSON数组的操作

1.定义

var josnArry=[];

2.添加

jsonArry.push(jsonObj);

3.删除

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

4.循环访问数组

a.jquery

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

b.一般方式

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

c.特殊方法

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

JSON对象遍历

myJson = {"name":"ji", "password":"123"};

for(var p in myJson){//遍历json对象的每个key/value对,p为key

    alert(p + " " + myJson[p]);

}

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

var jsonStr  = "{\"userId\":\"001\"}";  // json对象字符串
var jsonArryStr = "[{\"userId\":\"001\"},{\"userId\":\"002\"}]"; // json数组字符串
var jsonObj  = JSON.parse(jsonStr);     // 字符串转为json对象
var jsonArry = JSON.parse(jsonArryStr); // 字符串转为json数组
var jsonStr  = JSON.stringify(jsonObj); // json对象转为字符串
var jsonArryStr=JSON.stringify(jsonArry);// json数组转为字符串
alert(jsonStr);
alert(jsonArryStr);
alert(jsonObj.userId);
alert(jsonArry[0]['userId']);

tips:

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

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



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/5985371.html,如需转载请自行联系原作者

相关文章:

  • 阿里云全球19个地域节点,哪个节点的服务器好,速度快?
  • 回顾2017:基础设施支出增长 思科占主导地位
  • 微服务入门【系列视频课程】
  • mongodb集群模式(主从模式,副本集模式,分片模式)
  • 透彻影像王书浩:三易其辙与功不唐捐
  • 如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布
  • 为什么需要模版成员方法
  • W3C官方推荐使用新发布的HTML5.2
  • Lintcode: Minimum Subarray 解题报告
  • laravel ORM get() first()
  • h5 扫描二维码打开app和点击下载功能的实现
  • 云时代重新定义主机安全:自动化安全闭环是核心
  • C#利用HttpWebRequest进行post请求的示例(HTTPS)
  • windows中结束线程的方式
  • mogodb
  • 〔开发系列〕一次关于小程序开发的深度总结
  • AngularJS指令开发(1)——参数详解
  • Apache的80端口被占用以及访问时报错403
  • ES6之路之模块详解
  • gf框架之分页模块(五) - 自定义分页
  • Git初体验
  • java概述
  • LintCode 31. partitionArray 数组划分
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • node 版本过低
  • Redis的resp协议
  • 彻底搞懂浏览器Event-loop
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 记一次和乔布斯合作最难忘的经历
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 区块链分支循环
  • 通过git安装npm私有模块
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 携程小程序初体验
  • 再谈express与koa的对比
  • 大数据全解:定义、价值及挑战
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • $(selector).each()和$.each()的区别
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (办公)springboot配置aop处理请求.
  • (笔试题)合法字符串
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)大型网站架构演变和知识体系
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .gitignore
  • .NET CORE 第一节 创建基本的 asp.net core