js中的json操作

一、简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。
在JSON中,有两种结构:对象和数组
1、对象以“{”开始,“}”结束,“key/value”之间运用 “,”分隔。

    jsonDemo = {"name":"jym","sex":"man"};//这里面的key可以用引号包裹也可以不使用,在进行json字符串书写的时候,需要使用引号包裹key

2、数组以“[”开始,“]”结束。值之间运用 “,”分隔。

jsonDemo2 = [{name:'jym','sex':'man'},{name:'lp',sex:'woman'}]//可以使用for循环遍历

二、JSON对象和JSON字符串的转换

在数据传输过程中,JSON是以字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。如下:

JSON字符串:
    jsonStr = '{"name":"jym","sex":"man"}';//key需要使用引号
JSON对象:
    jsonDemo = {"name":"jym","sex":"man"};

1,JQuery插件支持的方式:

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象

2,浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器。

console.log(JSON.parse(jsonStr));//将String转出JSON
console.log(JSON.stringify(jsonDemo));//将JSON转换成String

3,Javascript支持的转换方式:

eval('('+jsonStr+')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 

注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

4,JSON官方的转换方式

http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js
在使用JSON.stringify()函数的时候,可以使用JSON.stringify(object,undefined,2)来讲输出美化。

三, 遍历JSON对象和数组

1、遍历JSON对象,代码如下:

jsonDemo = {"name":"jym","sex":"man"};
    for(let key in jsonDemo) {
        console.log(jsonDemo.key);
    }

2、遍历JSON数组,代码如下:

jsonDemo2 = [{name:'jym','sex':'man'},{name:'lp',sex:'woman'}];
    for(let key in jsonDemo2) {
        console.log(jsonDemo2[key].name+"   "+jsonDemo2[key].sex);
    }

Json和JavaScript对象区别

json:是一种数据格式,用于交换数据
JavaScript对象:一种JavaScript的引用类型。
区别:

对比内容 JSON JavaScript对象
键名 必须为双引号 可允许单引号,双引号,也可以不加
属性值 只能是数值(十进制),字符串(单双引号),布尔值,null,也可以是数组,符合JSON的对象,不能使函数,NaN,Infintiy,-Infintiy和undefined JavaScript的任意值
逗号问题 最后一个值后面不能有逗号 可以有逗号
数值问题 前导不能为0,小数点后会有值 都可以

猜你喜欢

转载自blog.csdn.net/swimming_in_it_/article/details/80819923