后台数据经常以json数据格式传回前台,解析当然首选JSON对象。

JSON对象有两个方法,使用JSON.parse(str)可以将json字符串解析成js中的对象。

var o = JSON.parse('{"name":"zjz","age":"23"}');
console.log(o);
//Object {name: "zjz", age: "23"}

同时这个方法还可以接收第二个参数,这个参数是个函数,参数为转换后对象的键和对应的值。

JSON.parse('{"name":"zjz", "age":"23"}', function(key, value) {
    console.log(key + ':' + value)}
);
//name:zjz
//age:23 

与parse相对的是stringify函数,作用是将js对象序列化为一个json字符串。

var obj = {name: 'zjz', age: '23'};
var json = JSON.stringify(obj);
//"{"name":"zjz","age":"23"}"

但JSON对象IE8之前的浏览器不支持。

第二种方法,是通过eval。

eval('(' + '{"name":"zjz","age":"23"}' + ')');
//Object {name: "zjz", age: "23"}

需要注意的是在解析字符串的时候,需要在字符串之外加上括号,使其成为表达式,然后eval进行计算。

eval解析JSON中的注意点 这篇文章里讲的挺详细的。

大家都不建议用eval。

第三种方法,使用Function。

var o = new Function('return ' + '{"name":"zjz","age":"23"}')();
//Object {name: "zjz", age: "23"}

所以在解析JSON,可以先用parse,如果不支持再使用Function。

try {
      JSON.parse(str);
} catch(e) {
       try {
              return (new Function('return ' + str))();
       } catch(e) {
               alert('json error');
        }
}

文中的输出都是chrome浏览器下的开发者工具的输出结果。

JavaScript解析json的更多相关文章

  1. Json -- 语法和示例,javascript 解析Json

    1. 语法 JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不 ...

  2. VBA中使用JavaScript脚本语言解析JSON数据

    JSON:JavaScript 对象表示法(JavaScript Object Notation) 和xml相似,都是文本形式(保存在文本文件中或字符串等形式),比如: jsstr = {" ...

  3. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  4. JSON介绍与JavaScript解析

    首先什么是JSON? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 JSON ...

  5. javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表

    原文 javascript如何解析json对象并动态赋值到select列表 JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScri ...

  6. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

  7. JavaScript转换与解析JSON的方法

    在JavaScript中将JSON的字符串解析成JSON数据格式,一般有两种方式: 一种为使用eval()函数. 使用Function对象来进行返回解析. 使用eval函数来解析,jquery的eac ...

  8. JavaScript中解析JSON --- json.js 、 json2.js 以及 json3.js的使用区别

    JSON官方(http://www.json.org/)提供了一个json.js,json.js是JSON官方提供的在JavaScript中解析JSON的js包,json.js.json2.js.js ...

  9. javascript 解析ajax返回的xml和json格式的数据

    写个例子,以备后用 一.JavaScript 解析返回的xml格式的数据: 1.javascript版本的ajax发送请求 (1).创建XMLHttpRequest对象,这个对象就是ajax请求的核心 ...

随机推荐

  1. smarty3--registerPlugin()函数报错问题

    smarty版本:smarty3.1.30 registerPlugin错误信息: Notice: Trying to get property of non-object in E:\Joomla\ ...

  2. Java安全之对称加密、非对称加密、数字签名

    原文地址: http://blog.csdn.net/furongkang/article/details/6882039 Java中加密分为两种方式一个是对称加密,另一个是非对称加密.对称加密是因为 ...

  3. ThinkPHP函数详解:C方法

    C方法是ThinkPHP用于设置.获取,以及保存配置参数的方法,使用频率较高.了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的.ThinkPHP的配置文件采用PH ...

  4. mac os升级为 Yosemite 10.10 后不能创建javaproject

    出现这样的情况可能是因为mac系统升级导致JAVA的安装路径发生改变(Xcode升级后也出现模拟器位置改变的情况,不要奇怪) 之前安装的eclipse就自然找不到SDK的路径了,所以会捆绑失败 接下来 ...

  5. PCL 点云数据操作 OpenCV遍历数据

    1.对于点云类型实例cloud,对其第i个点进行赋值操作,使用cloud.point[i].x 和 cloud.point[i].y 和cloud.point[i].z 分别对其XYZ坐标赋值. cl ...

  6. 关于开源的RTP——jrtplib的使用

    session.BeginDataAccess(); if (session.GotoFirstSource()){ do{ RTPPacket *packet; while ((packet = s ...

  7. materialish-progress

    https://github.com/pnikosis/materialish-progress materialish-progress-master.zip

  8. shell修改文件名(二)

    我想修改类似如下一批文件的文件名:AA01_01.txtAA01_02.txtAA01_03.txtAA01_04.txt 修改成BB02_01.txtBB02_02.txtBB02_03.txtBB ...

  9. [Whole Web] [Node.js] [Browserify] [Grunt] Automation task with grunt-browserify & grunt-contrib-watch

    What we want is when the server side Node.js files have been changed, we want to use browserify to b ...

  10. android学习日记21--消息提示之Toast和Notification

    1.Toast Toast译为土司,类似切片面包,用于弹出比较快速的及时提示信息.当Toast被显示时,虽然它悬浮应用程序最上方,但是并未获得焦点.它的设计就是为了提示有用的信息,而不打扰用户其他操作 ...