一、JSON 语法规则

JSON 是存储和交换文本信息的语法

在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,

JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量。

1、JSON可以有两种格式

一种是对象格式的:

{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串

另一种是数组对象

[{"name":"JSON","address":"北京市西城区","age":25}]//数据对象格式

从上面的两种格式可以看出对象格式和数组对象格式唯一的不同则是在对象格式的基础上加上了[],再来看具体的结构,可以看出都是以键值对的形式出现的,中间以英文状态下的逗号(,)分隔。

在前端和后端进行数据传输的时候这种格式也是很受欢迎的,后端返回json格式的字符串,前台使用js中的JSON.parse()方法把JSON字符串解析为json对象,然后进行遍历,供前端使用。

javascript 对象表示语法的子集。

  1. 数据在名称/值对中

  2. 数据由逗号分隔

  3. 花括号保存对象

  4. 方括号保存数组

二、JSON 名称/值对

  1. JSON 数据的书写格式是:名称/值对。

  2. 名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

  3. "firstName":"John"

三、JSON 值

值可以是:

  1. 数字(整数或浮点数)

  2. 字符串(在双引号中)

  3. 逻辑值(true 或 false)

  4. 数组(在方括号中)

  5. 对象(在花括号中)

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

数组

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

JSONArray

json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的

JSON对象

json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

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

JSON.stringify(obj)       将JSON对象转为字符串。
JSON.parse(string)       将字符串转为JSON对象格式。

json字符串转化成json对象

  1. // jquery的方法
  2. var jsonObj = $.parseJSON(jsonStr)
  3. //js 的方法
  4. var jsonObj = JSON.parse(jsonStr)

json对象转化成json字符串

  1. //js方法
  2. var jsonStr1 = JSON.stringify(jsonObj)

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

Map map和json都是键值对,不同的是map中键值对中间用等号分开,json中键值对中间用冒号分开。其实json就是一种特殊形式的map。

JSON数组,JSON对象,数组的区别相关推荐

  1. Arrays.deepToString() 方法同时适用于基元数组和对象数组

    Arrays.deepToString() 方法同时适用于基元数组和对象数组: import java.util.*;public class MultiDimWrapperArray {public ...

  2. js 三维数组转对象数组 二维数组转对象数组

    1. 三维数组转对象数组 输出: 代码如下: let dataArr = [[[109.654541015625, 29.34387539941801],[110.467529296875, 59.3 ...

  3. 数组中数组/嵌套对象数组的遍历操作

    数组中数组/嵌套对象数组的遍历操作 总结以下方法 1.for i in arr (推荐) 2.arr.foreach(item=>{ item.foreach(item2=>{ } ) } ...

  4. Json:前台对象数组传到后台解析

    前台代码 datalist是类似这样的对象数据: var datalist= new Array(); for ( var i = 1; i <= bookCount; i++) { var o ...

  5. 【最精简写法】获取一维数组和对象数组最值:最大值、最小值,返回对象

    Math.max(...arr);//返回数组最大值 Math.min(...arr);//返回数组最小值Math.max(...objArr.map(o => o.最值字段名));//返回对象 ...

  6. PHP中foreach详细分析—一般数组与对象数组

    PHP中的foreach作为经常用到的函数,常常用来遍历数组,对于数组中的元素是值的情形(如一般常见型的数组),foreach只是将数组中的每份元素的值拷贝到each后面的变量, 也就是对值本身的拷贝 ...

  7. “模板”学习笔记(7)-----数组模板+对象数组举例

    我们可以定义一个数组模板,并且利用该模板声明其数组成员.声明的方式非常简单,主需要一下两步: template<class ElementType,int n>; ElementType ...

  8. Java基础(数组)对象数组

    import com.day08.javabean.Student;public class StudentTest2 {public static void main(String[] args) ...

  9. 原生JS 使用Map将 字符串数组 转 对象数组

    字符串数组 let test=["item1","item2","item3"]; 利用map转为对象数组 test=test.map((i ...

  10. Java中用一条语句把基础类型(int)数组转为对象数组(Integer),或者变为List

    //不多说直接上代码int[] a={1,3,4};/**下面是将基本数组转化为对象数组*/ Integer[] ib= IntStream.of(a).boxed().collect(Collect ...

最新文章

  1. 系统架构设计的原则和模式
  2. ubuntu18.04.4 pip3 换清华、阿里、豆瓣 源
  3. 计算机网络最基础知识
  4. ZOC7 for Mac连接CentOS7无法输入中文问题
  5. JS表格分页(封装版)
  6. MySQL数据库服务器优化详细
  7. 每天一算法之插入排序
  8. MTU(Maximum Transmission Unit),最大传输单元
  9. 编程入门先学什么python-编程入门先学什么比较好
  10. 面试题之序列化与反序列化
  11. 暮光之城2蓝光BD高清下载
  12. ajax异步提示对号,jQuery Ajax显示对号和错号用于验证输入验证码是否正确
  13. java的pdf转永中_永中PDF转Word 免费转换不求人!
  14. Unity shader 空气扭曲效果
  15. 基于C语言设计的小型图形软件系统
  16. ArcGIS-云南滇池+抚仙湖流域地形图制作及使用图层下载(shp+dem)
  17. 公共计算机课件,全国计算机等级考试二级ACCESS公共基础知识课件.ppt
  18. [转]Cocos2d iPhone
  19. 中东地区的最大节日,卧兔网络带你看斋月营销套路
  20. 20171225 股票操作日志

热门文章

  1. 【算法趣题】硬币组合
  2. 山海演武传·黄道·第一卷 雏龙惊蛰 第七章 人与神兽的竞争
  3. 20155234 昝昕明 《网络对抗技术》实验一 PC平台逆向破解
  4. 基于soap协议的webservice开发
  5. x86系统上的内存分页
  6. 利用深度学习模型预测双色球
  7. 【立创EDA】使用solidworks创建立创EDA 3D模型
  8. css设置文字溢出隐藏
  9. 写一篇纪检工作的论文
  10. 【CSDN编程挑战赛第六期—参赛体验+思路】