JSON对象、JSON字符串的相互转换
json的格式:
第一种方式:
单一的json字符串,转换成json对象时,需要 eval('(' + json + ')');这样的格式,中间需要加括号
var json = '{ "username ": ' + "\"" + username + "\""
+ ', "性别":' + "\"" + sex + "\""
+ '}';
这里将json字符串转换成json对象有两种方法,分别是eval()和JSON.parse()(通常用eval)
1. var JSONObject = eval('(' + json + ')'); 将json字符串转换成json对象
2. var JSONObject = JSON.parse(json);
注意当用JSON.parse()时,可能会出现JSON未定义的页面js错误
解决方法:关闭浏览器兼容模式
数据访问方式:
var username = JSONObject.username ; var sex = JSONObject.sex ;
第二种:json数组
var jsonArr = ‘[{ "username ": username, "sex ": sex},{ "username ": username1, "sex ": sex1}]’;
和上面一样,将json字符串转换成json对象有两种方法,分别是eval()和JSON.parse()(通常用eval)
1. var JSONObject = eval(jsonArr); 将json字符串转换成json对象
2. var JSONObject = JSON.parse(JSON.stringify(jsonArr));
这里,将json数组转换成json对象时,parse时,必须传入的是字符串的格式,所以首先必须将数组对象解析成字符串,这里就用到了JSON.stringify(),将对象转换成字符串后,然后用JSON.parse()将json字符串转换成json对象
思路 :js数组对象-->字符串-->json对象
JSON.stringify():js数组对象转换后的字符串 "[{"\u59d3\u540d":"Alltas","\u6027\u522b":"\u7537","\u5e74\u9f84":"22"}]"
JSON.parse():将上述字符串转换成json对象
然后就可以利用json对象的属性来访问各属性的值了
属性就相当于key,值是value。Key-value键值对形式
数据访问:
var username = JSONObject[0].username ; var sex = JSONObject[0].sex ;
建议:属性用英文,尽量不要用中文。
第三种:json数组(与第二种略有区别)
var txt = '{"employees":[' +
'{"firstName":"Bill","lastName":"Gates" },' +
'{"firstName":"George","lastName":"Bush" },' +
'{"firstName":"Thomas","lastName":"Carter" }]}';
数据访问:
var obj = eval ("(" + txt + ")"); firstName = obj.employees[1].firstName lastName = obj.employees[1].lastName