JSON(JavaScript Object Notation) JS对象符号
是一种轻量级的数据交换格式
JavaScript eval()函数实现
(一) 标准格式
function JsonFormatting() { var jsonString = ‘{"Unid":"1","CustomerName":"宋江","Age":"33"}‘; var jsonObject = eval(‘(‘ + jsonString + ‘)‘); var tt = ‘‘; $.each(jsonObject,function(k, v) { tt += k + ":" + v+"<br/>"; }); $("#divmessage").html(tt); }
这种写法就是key值用双引号包围。这种格式可以叫做json串。通过eval函数将json串转换为json对象。
(二) 简写格式
function JsonFormatting() { var jsonString = ‘{Unid:"1",CustomerName:"宋江",Age:"33"}‘; var jsonObject = eval(‘(‘ + jsonString + ‘)‘); var tt = ‘‘; $.each(jsonObject,function(k, v) { tt += k + ":" + v+"<br/>"; }); $("#divmessage").html(tt); }
key值省略引号,通过eval函数将json串转换成json对象,然后可以通过两种方式访问:
@1. 点语法 object.property
var jsonString = ‘{"Unid":"1","CustomerName":"宋江","Age":"33"}‘; var jsonObject = eval(‘(‘ + jsonString + ‘)‘); alert(jsonObject.CustomerName);
@2. 键值对索引
Object[key]
var jsonString = ‘{"Unid":"1","CustomerName":"宋江","Age":"33"}‘; var jsonObject = eval(‘(‘ + jsonString + ‘)‘); alert(jsonObject["CustomerName"]);
eval函数说明:
它可以把一个字符串当作一个JavaScript表达式一样去执行。
eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。
如果s语句执行结果是一个值,则返回此值,否则返回undefined。对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值。
function EvalTest() { var code1 = ‘"a" + 2‘; //表达式 var code2 = ‘{a:2}‘; //语句 alert(eval(code1)); //输出a2 alert(eval(code2)); //输出undefined alert(eval(‘(‘ + code2 + ‘)‘)); //输出[object Object] }
对于对象声明语句来说,仅仅是执行,并不能返回值。
为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。
为jquery添加从json串到json对象的转换方法。
打开库,找到jQuery.extend({
添加方法
jsonToObject: function(a) { return eval(‘(‘ + a + ‘)‘); },
使用如下:
var jsonString = ‘{"Unid":"1","CustomerName":"宋江","Age":"33"}‘; var jsonObject = $.jsonToObject(jsonString); alert(jsonObject["CustomerName"]);
其中jsonString为json串,而jsonObject为json对象
jQuery实现
$.parseJSON("jsonstr"); 将json字符串转换成json对象
利用json.js包插件
var obj = JSON.parse(strJSON);
JSON对象转json字符串
var str = JSON.stringify(obj) 需要导入json.js包
function JsonFormatting() { var jsonObject = {"Unid":"1","CustomerName":"宋江","Age":"33"}; var jsstr=JSON.stringify(jsonObject); alert(typeof jsstr); }
时间: 2024-10-10 09:24:56