js读取解析JSON数据

本文详细介绍了JSON,包括其作为轻量级数据交换格式的特点,JavaScript中JSON的两种数据结构(对象、数组)及其操作,JSON在数据传输中的关键——字符串与对象的转换,以及JSON在实际项目中的应用难点。同时,文中提到了JSON.parse()与eval()方法的区别,并给出了转换和解析JSON的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

1、JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON
2、是轻量级的文本数据交换格式。 JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理JSON数据,不须要任何特殊的 API 或工具包。
3、JSON 独立于语言:JSON 虽然使用 JavaScript来描述数据对象,但JSON 仍然独立于JS。
4、JSON 解析器和 JSON 库支持许多不同的编程语言。目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
5、对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用

一、JSON的两种数据结构 及操作

JSON 有两种数据结构:对象、数组。
JSON 语法是 JavaScript 语法的子集,所以操作同JS一样。
1、对象

//简单形式:
var o={"name":"bty","age":11,"time":"2009-08-20"};
//复杂形式:
var o2 = {
     "list":[
          {"password":"666","name":"bty"},
          {"password":"422","name":"zsn"}],
     "array":[
          {"password":"123","name":"bty"},
          {"password":"452","name":"zsn"}]
};

注:{开始,}结束。名称/值用 逗号 隔开。
名称用 双引号括 起来;值如果是字符串则必须用 双引号括号,数值型则不须要。

2、数组

 //简单形式:
 var jsonArr2 = ["Google", "Runoob", "Taobao"]
 //复杂形式:
 var jsonArr2 = [ 
     {"name":"bty","age":11,"time":"2009-08-20"},
     {"name":"zsn","age":10,"time":"2008-08-20"}  ];

注:数组是值(value)的有序集合。以“[”开始,“]”结束。值之间运用 “,”(逗号)分隔。

3、操作
以上面例子为例。
(1) 修改值: 同JS一样

o2.list[0].name = "sam";    //修改对象属性的值
jsonArr2[0].name = "sam";   //修改数组元素的值

(2)删除值: 同JS一样

 delete o2.list;           //删除对象属性
 delete jsonArr2[0];       //删除数组元素
 delete jsonArr2[0].name;  //删除数组元素属性

二、JSON的关键

在数据传输流程中,json是以文本(即字符串)的形式传递的,而JS操作的是JSON对象,所以JSON对象和JSON字符串之间的相互转换是关键。

区分JSON字符串和JSON对象:

 //JSON字符串:
 var str1 = '{ "name": "bty", "sex": "man" }';
 //JSON对象:  
 var str2 = { "name": "zsh", "sex": "man" };

三、JSON字符串与对象的转换

1、JSON字符串 转换 为JSON对象
以上面str1为例
转换有三种形式

//1)
var obj = eval('(' + str1 + ')');
//2)
var obj = str1.parseJSON(); 
//3)
var obj = JSON.parse(str1); 

然后,就可以这样读取转换后的数据:

alert(obj.name);
alert(obj.sex);

注:JSON.parse()和eval()方法的区别:JSON.parse()不仅可以解析json格式的数据,而且还会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的。

eval(string):函数可计算某个字符串,并执行其中的的 JavaScript 代码。
eval()详解:点击这里

2、JSON对象 转化 为JSON字符串

//1)
var last=obj.toJSONString();
//2)
var last=JSON.stringify(obj);

alert(last);

四、实例

var str='[  
    {"name":"bty","sex":"man"},
    {"name":"ZSN","sex":"girl"}
]';  //字符串
var obj = str.parseJSON();//JSON字符串转JSON对象
alert(obj[0].name); //bty

日常项目JSON运用的难点 并不是通过网络请求接受到JSON数据,而是如何把接受到的JSON数据进行处理(转换数据结构等)。
网络请求分配给客户端的JSON数据一般都是 JSON字符串,把JSON字符串转换为可操作的 JSON对象很容易(调用JSON.parse()或parseJSON()方法即可),但是往往转换后的 JSON对象的数据格式或结构 并不符合 项目中API的要求,所以我们还要将该JSON对象的数据结构转换为项目中 可用的数据结构,这才是难点。

最后附几个常用的JSON工具链接
JSON在线解析
JSON压缩转义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值