JSON详解

/*

 * json对象的取值方法两种

 * obj.属性名

 * obj[属性名]或obj['属性名']

 * 若json的对象的key是数字(包括字符串型的 如'8','1')

 * 那取值的时候就必须采用obj[属性名] 且属性名既可以为字符串型 也可以是整数型

 * json对象存储的数据的是无序的 且不重复的(key不能重复)并且后面的相等的key元素会覆盖前面的

 * json对象似于JAVA中的map结构

 

 *在JSON中,有两种结构:对象和数组。

 1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

 

 var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

 

 2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

 */


var obj = {"s":1,'9':2,9:3};

//alert(obj.9);//报错 不建议使用基本类型做Key(包括字符串型的 如'8','1')

//alert(obj['9']);//2 json对象的key是数字(包括字符串型的 如'8','1') 获取value采用此种方法

//alert(obj.s);//1

//alert(obj['s']);//1



for( var o in obj){

// alert(o);//9,s //说明obj(json对象)散列结构 无序的 并且不可以重复 '9'和9是等同的 并且后面的相等的key元素会覆盖前面的

// alert(obj[o]); //3,1

}



var obj_arr =[{'8':1,'9':2}];//json数组

// alert(obj_arr[0]['8']);//1


var str = {"name": "cxh", "sex": "man" };//json对象

 //alert(str.name);//cxh



var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];//json数组

 //alert(jsonranklist.length);//2

 //alert(jsonranklist[0].xlid);//cxh


 

/**

 * json字符串转化为json对象的三种方法

 *

 */


var str1 = '{"name": "cxh", "sex": "man" }';//json字符串


var test = eval('(' + str1 + ')');//字符串转化为json对象

 //alert(test.name);//cxh


var json_t = JSON.parse(str1); //由JSON字符串转换为JSON对象

 //alert(json_t.name);


/*此方法报错 未尝试成功*/

//var json_d = str1.parseJSON(); //由JSON字符串转换为JSON对象

//alert(json_d.name); 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章