JSON (JavaScript Object Notation)是一种简单的数据格式,比xml更轻巧。 它是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。那么如何用JavaScript来解析json呢?

首先,科普一下json。在json中,有两种结构:对象和数组。

  1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:
    var o={“key”:”value”};

  2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。
    var array = [{“name”:”tom”},{“name”:”jake”}];

在数据传输流程中,json是以字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
json字符串:var str=’{“key”:”value”}’;
json对象:var o={“key”:”value”};

1. json字符串转化为json对象

可以通过JavaScript的eval()函数来进行解析,代码如下:

<script type="text/javascript">
    var json = '{"key":"value","jian":"zhi"}';
    var obj = eval("(" + json + ")");
    console.log(obj);         //控制台返回  Object
    console.log(obj.key);     //控制台返回  value
    console.log(obj.jian);    //控制台返回  zhi
</script>

或者通过JSON.parse()方法来解析,代码如下:

var json = '{"key":"value","jian":"zhi"}';
var obj =JSON.parse(json);
console.log(obj);         //控制台返回  Object
console.log(obj.key);     //控制台返回  value
console.log(obj.jian);    //控制台返回  zhi

既然这两种方法都可以解析json字符串,那么我们究竟使用哪种呢?在这之前,我们先来做一个测试:

var value = 1;
var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';
var json1 = eval('('+jsonstr+')');
console.log(json1);                  //控制台返回  Object
console.log('value: '+ value);       //控制台返回  value 2

我的天,evel方法竟然会执行json字符串里的代码!!

我们再看一下JSON.parse()方法:

var value = 1;
var jsonstr = '{"name":"jifeng","company":"taobao","value":++value}';
var json2 = JSON.parse(jsonstr);
console.log(json2);
console.log('value: '+ value);          
 //控制台报错Unexpected token + in JSON at position

现在知道怎么选择了吧。

eval()方法是极其不安全的,尤其是在解析第三方数据的时候,万一第三方数据给你加点恶意代码什么的你不就完了么?所以,JSON.parse()才是正确的选择,当然,有些浏览器不支持这个方法,
可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载json2.js,添加到你的hlml中就可以了。

除此之外还有一个 jsonStr.parseJSON()的方法,也可以将json字符串转化为json对象,同样需要json2.js包的支持。

2.json对象转化为json字符串

话不多说,先看代码:

var json = '{"key":"value","jian":"zhi"}';
var obj =JSON.parse(json);
var str=JSON.stringify(obj);
console.log(str);        
//控制台返回 {"key":"value","jian":"zhi"}

这里我们用到了和JSON.parse(str) 相对应的方法JSON.stringify(obj)。

同样,还有一个方法叫做obj.toJSONString()也可以将json对象转化为json字符串,与 jsonStr.parseJSON()相对应。

3.json字符数组转化为json数组

这个转化和字符串转对象是一样的,只是操作json数组的方式与操作json对象的方式稍有不同而已。看一段代码:

var arrayStr = '[{"name":"tom","age":"18"},{"name":"jake","age":"20"}]';
var arrayObj =JSON.parse(arrayStr);
console.log(arrayObj);         //控制台返回  Array[2]
console.log(arrayObj[0]);      //控制台返回  Object
console.log(arrayObj[0].name); //控制台返回  tom
console.log(arrayObj[1].age);  //控制台返回  20

对于json数组,可以通过下标来进行访问。由于它是一个数组,所以也可以通过for循环进行遍历。

4.jquery解析json字符串

简单地提一下jquery。在使用jquery的ajax功能时,有一个dataType属性,可以将这个属性设置为json或者利用$.getJSON()方法获得服务器返回的值,这个返回值就是一个json对象,所以就不需要再做转化。
当然,jquery也提供了转换的函数 $.parseJSON(string); 这个和之前讲的JSON.parse()得用法是一样的,具体怎么使用,看个人喜好。

JSON (JavaScript Object Notation)是一种简单的数据格式,比xml更轻巧。 它是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。那么如何用JavaScript来解析json呢? <el-pagination :page-size="pageSize" // 设置每页显示多少条 @current-change="currentChangeHandle" // 当前页数改变时调用函数 :current-page="currentPage" // 当前第几页 layout="total
js 解析 json 数据 ,可以使用 JSON .parse()方法来实现 解析 JSON .parse()方法可以 解析 JSON 字符串,转换为 JavaScript 对象 打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新) 下面我们就结合简单的代码示例,给大家介绍 js 解析 json 数据 的实现方法。 代码示例如下: <!DOCTYPE html> <html lang="en"> <meta charset="
JSON ( JavaScript Object Notation) 是一种轻量级的 数据 交换 格式 ,采用完全独立于语言的文本 格式 ,是理想的 数据 交换 格式 。同时, JSON JavaScript 原生 格式 ,这意味着在 JavaScript 中处理 JSON 数据 不须要任何特殊的 API 或工具包。 本文主要是对 JS 操作 JSON 的要领做下总结。 在 JSON 中,有两种结构:对象和...
理解 JSON 最关键的一点是要把它当成一种 数据 格式 ,而不是编程语言。 JSON 不属于 JavaScript ,它们只是拥有相同的语法而已。 JSON 也不是只能在 JavaScript 中使用,它是一种通用 数据 格式 。很多语言都有 解析 和序列化 JSON 的内置能力。 1. 语法 JSON 语法支持表示3种类型的值: 简单值:字符串、数值、布尔值和null可以在 JSON 种出现,特殊值undefined不可以; 对象:第一种复杂 数据 类型,对象表示有序键/值对。每个值可以是简单值,也可以是复杂类型; 数组:第二种复杂 数据 .
js 读取 解析 JSON 数据 JSON ( JavaScript Object Notation) 是一种轻量级的 数据 交换 格式 ,采用完全独立于语言的文本 格式 ,是理想的 数据 交换 格式 。同时, JSON JavaScript 原生 格式 ,这意味着在 JavaScript 中处理 JSON 数据 不须要任何特殊的 API 或工具包。 本文主要是对 JS 操作 JSON 的要领做下总结。 在 JSON 中,有两种结构:对象和数组。 1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值