关于数据解析

 

创建包含 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); //弹出:{&quot;address&quot;:&quot;china&quot;,&quot;name&quot;:&quot;abc&quot;}

alert(data.address); //没有显示,弹出undefine

},"text");

}

 

就是客户端接收到服务器返回的json字符串后,怎么转换成js的json对象,好通过对象.的方式访问数据。

先用js的eval函数将data转为对象 

你返回的数据根本就不是json数据,Jquery里有个方法可以返回json类型数据,或者你在$.post时指定返回类型为json类型

 

posted @ 2015-06-11 00:32  小屁孩988  阅读(246)  评论(0编辑  收藏  举报