调用查询中心msg数据用json二次输出

之前都是用parseJSON来解析json的,这次竟然不行了,前端页面提示parseJSON is not a function

然后用这样就可以了var objs = JSON.parse(data);

这样就行了,同事说是因为返回的json格式不够通用,也是正常的json数组。

+++++++++++++++++++++

把方法转json在前台输出

在JSON中,有两种结构:对象和数组。

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

例如:

var main={ "init":"a","start":"b","end":"c"}

2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

例如:

var main=[{"init":"a","start":"b","end":"c"},{"aa":"aab","bb":"bbc","cc":"ccd"}];

 

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

 

一、JSON字符串转换为JSON对象\

//由JSON字符串转换为JSON对象

var obj = eval('(' + str + ')');

或者

var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

或者

var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

然后,就可以这样读取:

Alert(obj.name);

Alert(obj.age);

特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

 

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

例如:

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

或者

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

alert(last);

 

 

两个变量,要将a转换成字符串,将b转换成JSON对象:

var a={"name":"Bob","sex":"男","age":"20"}

var b='{"name":"Alice","sex":"女","age":"20"}';

jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON(json),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。