js中将字符串转换成json的三种方式
1、eval方式解析
function strToJson(str){
var json = eval('(' + str + ')');
return json;
}
记得别忘了str两旁的小括号
2、new Function形式
function strToJson(str){
var json = (new Function("return " + str))();
return json;
}
3、JSON.parse()将json字符传字符串转换为json(JavaScript)对象
JSON.parse(obj,filter/(array,function))
参数1:必选,需要转换的对象
参数2:可选,对需要转换的对象过滤,可是数组和function。function提供key,value两个参数
JSON.parse(jsonStr,function(key,value){
console.log(key,value);
});
function strToJson(str){
return JSON.parse(str);
}
使用JSON.parse需严格遵守JSON规范,所有属性都需用引号引起来。如果没有用引号引起来,使用JSON.parse所有浏览器中均抛异常
4、JSON.stringify()将JavaScrip对象转换为json字符串
JSON.stringify(ojbect,filter/(array,function),indent)
该方法自带三个参数
参数1:必选,需要转换的对象
参数2:可选,对需要转换的对象过滤,可是数组和function。function提供key,value两个参数
参数3:可选,缩进
var obj={
name:'xiaoming',
age:26
}
console.log(JSON.stringify(obj,['name'],4));
JSON.stringify(obj,function(key,value){
if(key=='xiaoming'){
return 'MR'+value;
}else{
return value;
}
},4);
示例
//(1) 这是一个js对象
var jsObj1 = {
name : "张三"
}
//(2) 这是一个内部带有方法js对象。
var jsObj2 = {
name : "张三",
func : function(){
alert("hello");
}
}
//(3) 这是一个符合JSON数据格式的js对象
var jsonObj = {
"name" : "张三",
"age" : 10,
"remark" : {"high" :170,"address" : "beijingshi"}
}
//(4) js数组对象
var jsArray = [
{name : "张三"},
{"age" : 10}
]
function testJson(){
var JSONstr1 = JSON.stringify(jsObj1);
var JSONstr2 = JSON.stringify(jsObj2);
var JSONstr3 = JSON.stringify(jsonObj);
var JSONstr4 = JSON.stringify(jsArray);
console.log(JSONstr1);//{"name":"张三"}
console.log(JSONstr2);//{"name":"张三"}
console.log(JSONstr3);//{"name":"张三","age":10,"remark":{"high":170,"address":"beijingshi"}}
console.log(JSONstr4);//[{"name":"张三"},{"age":10}]
}
示例代码总结:
1、 其中 1、3、4的执行结果说明,JSON解析器的stringify()函数对于js对象是否符合JSON格式是不加限定,都可以把js对象转换成JSON格式字符串
2、 2的执行结果说明,js对象中如果没有JSON表示的值(比如函数和undefined)将会被排除。