// 使用JavaScript 语法创建对象
//
function Person(lname, sex){
}
// 创建一个实例
var p=new Person('张三','男');
// 输出Person 实例
alert(p.lname);
//使用JSON 语法创建数组
var arr=['a','bbc'];
alert(arr[1]);
//创建Json对象的语法 ,如下:
var obj= { "name": " 张三 " , "sex" : ' 男 ' } ;
alert(obj.sex);
//json 格式的对象和json 文本是不同的
var obj={"lname":" 张三 ","sex":'男 '}; //json 格式的对象
var str=' { "lname": " 张三 " , "sex" : " 男"}'; //json 格式的字符串( json 格式的文本)
alert(typeof(obj) +' '+
var
var
var
var
var
alert(typeof(myhash) +' '+
// 结果是 object object object
var
myhash.mm = "oop";
myhash['mm2'] = "oop2";
myArray["pl"] = 12;
alert(myArray["pl"]);
alert(myArray[0]);
alert(myArray["0"]);
alert(myhash2["loo"]);
alert(myhash2["yyy"]);
alert(myhash2.yyy);
alert(myhash.mm);
alert(myhash.mm2);
alert(myNewArray1[0][1]);
alert(myNewArray1[1]);
alert(myNewArray1["ff1"]);
alert(myArray.mkk[1]);
// 结论:var
//
//
//
//
var obj ={'name':'冯娟','password':'123456','department':'技术部','sex':'女','old':30};
var str ='';
for(var p in obj)
{
str = str+obj[p]+',';
//str = str+p+',';
}
alert(str);
var obj ={0:'name',13:'password',2:'department',3:'sex',4:'old'};
//var obj =['冯娟','123456','技术部','女',30];
alert(obj[13]);
// 当键名为数字时, 只能用这种方引用, 而不能这样引用: alert(obj.13);
//当json的键为数字: 对于数字键名或者非正常变量字符(比如有空格),必须使用 aa[x]的方式。
var str ='';
for(var p in obj)
{
//str = str+obj[p]+',';
str = str+p+',';
}
alert(str);
//JSON 格式的json 对象 和JSON 文本的转换
//使用eval 来转换JSON 字符到JSON 格式的Object
var str = '[{ "name": " 张三", "sex": " 男" , "age":30, "ff":{ "sex": " 男" , "age":30}},{ "sex": " 男" , "age":30}]';
//var obj = eva('(' + str + ')');
var obj = eva(str);
//这里,上面两种命令都可以
function json2str(o) {
}
var newJSONtext =
var obj2 = eva("("+newJSONtext+")");
//这里,var obj2 = eva(newJSONtext); 报错
alert( newJSONtext);
alert( obj2[1].sex);
var aajson =
var obj = JSON.parse(aajson);
jquery ajax 异步获取的数据类型——json对象和字符串处理方式 :
1.对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval_r()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:
var dataObj=eval_r("("+data+")");//转换为json对象
alert(dataObj.root.length);//输出root的子对象数量
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}
//输出每个root子对象的名称和值
alert("name:"+item.name+",value:"+item.value);
})
注:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变。
2.对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getJSON方法为例说明数据处理方法:
$.getJSON("http://www.phpzixue.cn/",{param:"gaoyusi"},function(data){
//此处返回的data已经是json对象
//以下其他操作同第一种情况
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});
这里特别需要注意的是方式1中的eval_r()方法是动态执行其中字符串(可能是js脚本)的,这样很容易会造成系统的安全问题。所以JSON提供了专门的 json.js 文件
一、JSON字符串转换为JSON对象
var obj = str.parseJSON();
如果obj对一个本来就是JSON对象使用eval()函数,不管使用多次,还是JSON对象。但是如果使用parseJSON()函数处理,会有问题(抛出语法异常)。
二、JSON对象转化为JSON字符
var last=obj.toJSONString(); 或者 var last=JSON.stringify(obj);
新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。