json是一种跨平台的数据交换格式,相比与xml它更轻量,占用资源更少,速度更快,但是它的格式较少,但对于ajax来说足够了
服务端把对象转化成字符,用json传送,数据被ajax对象接受后,被json转化成对象,再显示出来
首先说说json的语法 (在js中写)
1 表示一个对象
var obj={"company":"达内","address:{"city":"beijing","stress","huayuanstress","root":701}}
(这个对象表示有嵌套的意思)
alert(obj.address.room)
2 表示由对个对象组成的数组
var obj=[{"name":"minglou","age":30},{"name":"gucheng","age":33}];
alert(obj[1].age)
其次说说如何使用json
两个方面走
一是从java对象或者是对象数组变成json字符串的形式
要是用json的jar包 要用到JSONObject JSONArray
在java代码中写上
JSONObject obj=JSONObject.fromObject(stock);
String str=obj.toString();
JSONArray arr=JSONArray.fromObject(stocks);
String strs=arr.toString();
把json字符串变成javascript对象(或者是数组)
用到prototype.js的evalJSON()
用法是导入<script type="text/javascript" src="prototype.js">
写一个例子:把服务器发过来的字符串转变成对象了之后,再在页面上做局部的更新
<script type="text/javascript" src="my.js"></script> //用到了ajax对象
<script type="text/javascript" src="prototype.js"></script> //用到json的转换
<script type="text/javascript" >
function showStock(){
setInterval(quoto,5000);
}
function quoto(){
var xhr=getXhr(); //获得ajax对象
if(readyState==4&&status==200){
var txt=xhr.responseText;
var stocks=txt.evalJSON();
var strs='';
if(int i=0;i<stocks.length;i++){
var s=stocks[i];
strs='<tr><td>'+s.code
+'</td><td>'+s.name
+'</td><td>'+s.price+'</td></tr>'
}
${'id'}.innerHTML=strs;
}
xhr.send(null);
}
</script>