关于数据解析
创建包含 JSON 语法的 JavaScript 字符串:
var txt = '{ "employees" : [' +'{ "firstName":"John" , "lastName":"Doe" },' +'{ "firstName":"Anna" , "lastName":"Smith" },' +'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval ("(" + txt + ")");
历程:
<h2>Create Object from JSON String</h2> <p> First Name: <span id="fname"></span><br> Last Name: <span id="lname"></span><br> </p> <script> var txt = '{"employees":[' + '{"firstName":"John","lastName":"Doe" },' + '{"firstName":"Anna","lastName":"Smith" },' + '{"firstName":"Peter","lastName":"Jones" }]}'; var obj = eval ("(" + txt + ")");// document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script>
JSON.parse(text, reviver)
text 必需。 一个有效的 JSON 字符串。
reviver
可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:
如果 reviver 返回一个有效值,则成员值将替换为转换后的值。
如果 reviver 返回它接收的相同值,则不修改成员值。
如果 reviver 返回 null 或 undefined,则删除成员。
parse用于从一个字符串中解析出json对象,[使用 JSON.parse 将 JSON 字符串转换为对象]
如
cankao:http://blog.csdn.net/lowkeysk/article/details/8175195
var str = '{"name":"huangxiaojian","age":"23"}'
结果:
JSON.parse(str)
Object
- age: "23"
- name: "huangxiaojian"
- __proto__: Object
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。
stringify()用于从一个对象解析出字符串,如
var a = {a:1,b:2}
结果:
JSON.stringify(a)
"{"a":1,"b":2}"
<h2>Create Object from JSON String</h2> <p> First Name: <span id="fname"></span><br> Last Name: <span id="lname"></span><br> </p> <script> var txt = '{"employees":[' + '{"firstName":"John","lastName":"Doe" },' + '{"firstName":"Anna","lastName":"Smith" },' + '{"firstName":"Peter","lastName":"Jones" }]}'; obj = JSON.parse(txt);// document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script>
JSONP 的知识[JSON with Padding]:是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据
为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。
同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。
首先给出JSON字符串集,字符串集如下:
代码如下:
var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'北京市'},
{name:'6102',value:'天津市'},
{name:'6103',value:'上海市'},
{name:'6104',value:'重庆市'},
{name:'6105',value:'渭南市'},
{name:'6106',value:'延安市'},
{name:'6107',value:'汉中市'},
{name:'6108',value:'榆林市'},
{name:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}";
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:
1.一种为使用eval()函数。
2. 使用Function对象来进行返回解析。
使用
使用eval函数来解析,并且使用jquery的each方法来遍历
jquery请求后返回的结果是json对象
参考:http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html
http://www.educity.cn/wenda/195035.html
服务器返回json字符串后,在jquery里怎么无法调用啊。怎么转换成对象?
服务器返回的字符串是:{"address":"china","name":"abc"}
我用jquery的post:
$.post("http://localhost:8080/testjquery/ok/testaction",function(data){
alert(data); //弹出:{"address":"china","name":"abc"}
alert(data.address); //没有显示,弹出undefine
},"text");
}
就是客户端接收到服务器返回的json字符串后,怎么转换成js的json对象,好通过对象.的方式访问数据。
先用js的eval函数将data转为对象
你返回的数据根本就不是json数据,Jquery里有个方法可以返回json类型数据,或者你在$.post时指定返回类型为json类型