1.json字符串转json 对象:
$.parseJSON( jsonstr ); //jquery.parseJSON(jsonstr),可以将json字符串转换成json对象
JSON.parse(jsonstr); //可以将json字符串转换成json对象
var obj = eval('(' + str + ')');//可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
json对象读取方式:Alert(obj.name);
2.json对象转json字符串:
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。
var last=obj.toJSONString(); //将JSON对象转化为JSON字符
注:上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。
3.json字符串转数组:
var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] ";
var myobj=eval(t2);
for(var i=0;i<myobj.length;i++){
alert(myobj[i].name);
alert(myobj[i].age);
}
var str = '1,2,3,4,巴德,merge'; var arr = str.split(','); console.log(arr); // ["1", "2", "3", "4", "巴德", "merge"] 数组 console.log(arr[4]); // 巴德
4.数组转json字符串:
其实核心的方法就是:JSON.stringify()
参数,不论是数组,还是对象,直接传入,返回的就是json字符串。
var arr = [1,2,3,4,'巴德','merge']; var str = arr.join(','); console.log(str); // 1,2,3,4,巴德,merge
5.json对象转数组:
for(var i=0;i<myobj.length;i++){
alert(myobj[i].name);
alert(myobj[i].age);
}
6.数组转json对象:
var
array = [[
"标题1"
,
"12:00"
,
"type"
],[
"标题2"
,
"12:10"
,
"type"
],[
"标题3"
,
"12:20"
,
"type"
],[
"标题4"
,
"12:30"
,
"type"
]];
document.write(array);
Array.prototype.format=
function
(){
if
(!
this
.length)
return
null
;
var
i = 0,
len =
this
.length,
arr = [];
for
(;i<len;i++){
arr.push({
"标题"
:
this
[i][0],
"time"
:
this
[i][1],
"类别"
:
this
[i][2]});
}
return
JSON.stringify(arr);
};
7.JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
-
对象格式大括号开始{}
-
对象数组格式是以[{}]这种格式开始的。
1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的;
2.无论是数组还是对象,之间的元素都用“,”隔开;
3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值;
4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。
例子:
JSON字符串:
var jsonstr = '{ "name": "cxh", "sex": "man" }';
JSON对象:
var jsonobj = { "name": "cxh", "sex": "man" };
JSON数组:
var jsonarr ={
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
] }
对象数组:
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
alert(employees[0].lastName); // 方式一
alert(employees[0]["lastName"]); // 方式二
数组
var arr=['']
//将json字符串转换成json对象
var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }";
var jsonobj=eval('('+t+')');
alert(jsonobj.firstName);
alert(jsonobj.lastName);
//将json字符串转换为数组
var t2 = "[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] " ;
var myobj=eval(t2);
for(var i=0;i<myobj.length;i++){
alert(myobj[i].name);
alert(myobj[i].age);
}
//将json字符串转换为数组
var t3="[['社旗县国税局桥头税务所','社旗县国税局桥头税务所','社旗县城郊乡长江路西段']]"
var obj = eval(t3);
//通过eval() 函数可以将JSON字符串转化为对象
for(var i=0;i<obj.length;i++){
for(var j=0;j<obj[i].length;j++){
alert(obj[i][j]);
}
}
response = (
"[{ name: 'Joe', age: '30', gender: 'M'},{ name: 'Chandler', age: '32', gender: 'M'},{ name: 'Rose', age: '31', gender: 'M'}]" //字符串形式
);
var response1 ="({ name: 'Vicson', age: '30', gender: 'M'})"; //字符串形式,这里的小括号不能少
json = eval(response);
json1 = eval(response1);
alert(json[0].name + "," + json[1].age + "," + json[2].gender);
alert(json1.name);
var str = '1,2,3,4,巴德,merge'; var arr = str.split(','); var strify = JSON.stringify(arr); console.log(arr); // ["1", "2", "3", "4", "巴德", "merge"] 数组 console.log(arr[4]); // 巴德 console.log(strify); // ["1", "2", "3", "4", "巴德", "merge"] 字符串 var arrParse = JSON.parse(strify); console.log(arrParse); // ["1", "2", "3", "4", "巴德", "merge"] 数组