关于json的几个方法

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)将会被排除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值