JSON的解析

一:JSON字符串转换为JSON对象

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

如Ajax等。

1、Javascript 的 eval()函数

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var person = '{"name":"BeginMan","age":22}';//Json字符串
var personObject = eval("("+person+")");    //解析为Json对象
alert(personObject);    //[object Object]

eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问题。eval 的使用是基于传入的代码参数是可靠的假设的,有一些情况下,可能客户端是不可信任的。

2、json2.js

为了方便地处理JSON数据,JSON提供了json2.js包,下载地址:https://github.com/douglascrockford/JSON-js/blob/master/json2.js

JSON.parse(JsonText,filter);  将 JavaScript 对象表示法 (JSON) 字符串转换为对象。可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。parse:解析

//导入json2.js
//JSON.parse(JsonText,filter);//可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。
var pjson = JSON.parse(person,function(key,value){
    alert(key+value);//输出nameBeginMan,age22
})

二、可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串。

1.JSON.stringify(value [, replacer] [, space])作用:将 JavaScript 对象转换为字符串,这个函数的作用主要是为了系列化对象的。

//数据接上面
var pobject = JSON.stringify(personObject);
alert(pobject);    //输出{"name":"BeginMan","age":22}

    例如:

    var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

    alert(last);

2.toJSONString()

   例如:

   var last=obj.toJSONString(); //将JSON对象转化为JSON字符

    留心:

    上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json2.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。

将两个JSON对象组装到一个里面

function addJson(J1,J2){
    if(J1&&J2){
        for(var i in J2){
            J1[i]=J2[i];
        }
    }
}
var json1 = {"name":"BeginMan"};
var json2 = {"age":22};
addJson(json1,json2);//由于并没有返回结果,所以只是进行功能上的操作
alert(JSON.stringify(json1));    //输出{"name":"BeginMan","age":22}

 参考:

http://www.json.org/json-zh.html

http://www.cnblogs.com/xiaoyaoyou3/archive/2013/04/12/3015903.html

http://blog.csdn.net/sanpintian/article/details/7347711

http://www.cnblogs.com/worfdream/articles/1956449.html

原文地址:https://www.cnblogs.com/leejersey/p/3407435.html