JSON,全称JavaScript对象表示法(JavaScript Object Notation)。笔者在学习时接触到JSON常用的两种格式(JSON字符串&JSON对象),查阅了多份资料才理清了两者的区别与联系,以下是自己的归纳。
一、区别与联系
在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,在JS操作之前需要将其转换为JSON对象。
1. JSON字符串
JSON字符串,顾名思义数据类型是字符串,不能直接读取JSON的键值对。如:
‘{“name”:“evelyn”,"country":“China”}’
2. JSON对象
JSON (JavaScript Object Notation) is an open-standard format that uses human-readable text to transmit data objects consisting of attribute–value pairs. It is the most common data format used for asynchronous browser/server communication (AJAJ), largely replacing XML which is used by AJAX.(from https://en.wikipedia.org/wiki/JSON),如:
{“name”:“evelyn”,"country":“China”}
从形式上可以看到,JSON对象加上引号便是JSON字符串。
二、两者之间的转换
1. "JSON字符串"转化为"JSON对象"
要运用下面的sJson(JSON字符串),必须运用下面的要领先转化为JSON对象(这一点在ajax返回JSON数据时经常使用)。将"JSON字符串"转化为"JSON对象"的三种方法:
(1) JSON.parse( ). 示例如下:
运行结果如下:
从运行结果可以知道,经过方法JSON.parse( ),字符串转换成JSON对象。
(2)jQuery.parseJSON( ),示例如下:
var oJson=jQuery.parseJSON(sJson);
运行结果与上面例子一样。
(3) eval( ),示例如下:
var oJson=eval( '('+sJson+')' );
运行结果与上面例子一样。
2. "JSON对象"转化为"JSON字符串"
将"JSON对象"转化为"JSON字符串"的两种方法:
(1)JSON.stringify(),示例如下
运行结果如下:
从运行结果可以知道,经过方法
JSON.stringify( )
,JSON对象转换成字符串。
(2)toJSONString( ),示例如下
var sJson=oJson.toJSONString( );
运行结果与上一例子相同。
三、说明
上面的多个要领中,除了eval()函数是js自带的和jQuery.parseJSON( )之外,其他的多个要领都来自json.js包。