js中操作json,json对象和json字符串的转换与区别

JSON(JavaScript Object Notation):轻量级的数据交换格式,更容易的阅读和编写。

JSON 是JavaScript对象文字符号的一个子集. 由于JSON是JavaScript的一个子集, 它可以自如的在JavaScript中使用.


json对象

var json_obj01 = {
    "list": [{
        "name": "list01",
        "content": "content01"
    },
    {
        "name": "list02",
        "content": "content02"
    },
    {
        "name": "list03",
        "content": "content03"
    }]
};
//json_obj01 包含了一个list对象,list对象包含了3个对象数组,其中每个数组包含name,content两个属性

console.log(json_obj01.list[0].name);

json字符串转对象
var str = '{"name":"hello","alt":"hello,world","author":"zhaojian","num":"1"}';  //安全性高,必须是严格的JSON(要用双引号)


var str1 = '{name:"hello"}';  //不严谨的json字符串,不建议使用


var json = JSON.parse(str); //JSON.parse()转换为json对象

**********************************************************************

var myObject = JSON.parse(myJSONtext, reviver);//JSON.parse()扩展
    var myObject = JSON.parse(str, function (key,value){
        if(key == 'num'){
            value++;
        }
        return value;
     });
    //每个值将会被替换为reviver函数的返回结果
console.log(myObject);
**********************************************************************
//要将 JSON 字符串转换成一个对象, 我们可以用 eval() 函数. eval() 会触发JavaScript的编译器. 因为JSON是JavaScript的一个真子集, 编译器会正确的解析字符串内容, 同时生成一个对象结构. 字符串必须用括号括起来, 以免产生JavaScript语法歧义.
var myObject = eval('(' + myJSONtext + ')');
//eval(eval 函数速度很快. 它可以编译和执行任何JavaScript代码, 这里可能存在安全问题. 当源是可信, 可以使用 eval. 而用JSON解析器是更安全的方式. 如果服务器用的不是严谨的JSON编码, 或者它没有严格检查所有输入内容, 它也可以提供无效的JSON, 同时带上危险的脚本. 此时, eval 将会执行该脚本, 产生危害. )eval实际使用中用到它的情况并不多。


var json1 = JSON.parse(str1);//转换不规范json字符串
//提示错误:VM232:1 Uncaught SyntaxError: Unexpected token n in JSON at position 1    到这里已经报错了
console.log(str);
console.log(json);
//console.log(json1);

转回字符串
var obj = new Object();
obj.name="objname01";
obj.age=18;
var obj1={ 'left':100, 'top':200};

var strnew = JSON.stringify(obj1);//stringify() : 把json转化成字符串,会自动的把双引号加上
console.log(strnew);

var strnew02 = JSON.stringify(obj,function(key,value){
if(key =='age'){value++;} return value;//别忘了return返回值
});
console.log(strnew02);

var myJSONObject = {
"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};

//alert(myJSONObject.bindings[0].method);


//JQUERY

//串->对象
var obj3 = $.parseJSON(str);
console.log( obj3.name === "hello" );

//jquery-json 扩展库
//对象->串    
//var str3 = $.toJSON(obj);
//console.log(str3);

//evalJSON ....扩展库自己直接百度吧




//在Javascript语言中,关联数组就是对象,对象就是关联数组。这一点与php语言完全不同,在php中,关联数组也是数组。



//比如在javascript中,可以这样定义一个对象:

var a={"城市":"北京","面积":16800,"人口":1600};

//但是,也可以定义成一个关联数组:

a["城市"]="北京";
a["面积"]=16800;
a["人口"]=1600;

var bb=[1,2,3,4];

bb['foo']='Hello World';
//这就出现一个很有意思的事情
console.log(bb);//4
php中是5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值