javascript解析json字符串,各种格式分析
JS,JSON,EVAL函数说明
-
JSON就是一个特殊格式的字符串 ,这个字符串可以被任意语言识别,并且可以转换为任意语言中的对象,JSON在开发中主要用来数据的交互
-
JSON和js对象的格式一样,只不过JSON字符串中的属性名必须加双引号,其他的和js的语法一致
-
eval() 函数可以用来执行一段字符串形式的JS代码,并将执行结果返回
对象{} 数组[]
js对象
var str = {"name":"xcSharp","age":"18"}
json对象
var str = '{"name":"xcSharp","age":"18"}'
eval()
var str = '{"name":"xcSharp","age":"18"}'
var obj = eval("(" + str + ")");
console.log(obj);
JSON.parse(字符串) 方法用于将一个 JSON 字符串转换为对象
var str = '{"name":"xcSharp","age":"18"}'
var obj=JSON.parse(str);
alert(obj.name);
alert(obj.age);
JSON.stringify(对象或者数组) 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串
var str = {"name":"xcSharp","age":"18"}
var obj=JSON.parse(JSON.stringify(str));
alert(obj.name);
alert(obj.age);
错误1:Unexpected token o in JSON at position 1
错误源码
修改前
var userList={"a":"1","b":"[{name:'lijz',age:18},{name:'lucy',age:16}]"};
var obj = JSON.parse(userList);//JSON.parse(这里是字符串,不能是对象)
var newObj=eval(obj.b);
alert(newObj[1].name);
修改后
var userList={"a":"1","b":"[{name:'lijz',age:18},{name:'lucy',age:16}]"};
var obj = JSON.parse(JSON.stringify(userList));
var newObj=eval(obj.b);
alert(newObj[1].name);
错误2:Unexpected token n in JSON at position 2
错误源码
var userList={"a":"1","b":"[{name:'lijz',age:18},{name:'lucy',age:16}]"};
var obj = JSON.parse(JSON.stringify(userList));
var newObj=JSON.parse(obj.b);
alert(newObj[0].name);
修改后
var userList={"a":"1","b":"[{name:'lijz',age:18},{name:'lucy',age:16}]"};
var obj = JSON.parse(JSON.stringify(userList));
var newObj=eval(obj.b);
alert(newObj[1].name);