什么是JSON?JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互,比xml更轻量级。json本身利用了js中面向对象的形式。对象可以打点访问。
用途:原来写ajax,要从服务器后台得到返回值,如果利用ajax.dll可以返回一个dt;
但用jquery不能得到一个dt,要想得到dt里的数据就拼接字符串,然后在html中获得这个字符串,再分割开来。
并不知道用json这样一个非常简便的面向对象的数据格式。
语法:元素与值用冒号 ":" 隔开 元素与元素用逗号 "," 隔开 {} 之间是一个对象, 对象可以层层嵌套
[] 表示数组, 数组元素用逗号 "," 隔开 值可以是 string、number、object、array、true、false、null;
其中 string 要使用双引号(也有语言可以用单引号) string 中可以使用类似 C 语言的转义字符
number 可以使用科学计数法
举个简单的例子:
<script>
function showJSON() {
var user =
{
"username":"andy",
"age":20,
"info": { "tel": "123456", "cellphone": "98765"},
"address":
[
{"city":"beijing","postcode":"222333"},
{"city":"newyork","postcode":"555666"}
]
}
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
alert(user.address[0].city);
alert(user.address[0].postcode);
}
</script>
JSON提供了json.js包,下载/Files/sunyaling/json.rar 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。
js本身可以转换json格式
<script>
//可以使用eval来转换JSON字符到Object
function myEval() {
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = eval('(' + str + ')');
alert(obj.name);
}
--------------------
//或者使用parseJSON()方法
function myEval() {
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = str.parseJSON();
alert(obj.toJSONString());
}
</script>
页面引用
<script src="js/jquery.json.js" type="text/javascript" charset="utf-8"></script>
一个ajax结合json的例子:
服务器端返回数据,注意转译"\\"
StringBuilder result = new StringBuilder();
result.Append("{");
result.Append("\"msg\":\""+str1.Replace("\"","\\\"")+"\","); // " \"
result.Append("\"times\":\""+str2+"\"");
result.Append("}");
Response.Write(result.ToString());
<script>
function ShowNum()
{
try
{
var port = $("#txtPort").val();
var time = $("#txtTime").val();
$.ajax({
url:'AjaxHander.aspx?action=getChatroomActions',
type:'post', //数据发送方式
dataType:'html', //接受数据格式 (这里有很多,常用的有html,xml,js,json)
data:'port='+port+'&time='+time+'&date='+new Date(), //要传递的数据
error: function(){ //失败
//alert('Error loading document');
},
success: function(msg)
{ //成功
var msJson = $.evalJSON(msg);
$("#ulListener").html(msJson.msg+$("#ulListener").html());
if($("#ulListener").find("li").length>10)
{
$("#ulListener").find("li").each(function(i) {
if(i>9)
$(this).remove();
});
}
$("#txtTime").val(msJson.times);//时间
}
});
}catch(e){alert(e);}
}
//ShowNum();
setInterval(ShowNum,5000);
</script>