Q:什么是”JSON字符串”,什么是”JSON对象”,两者的区别?

a.JSON对象是直接可以使用JQuery操作的格式,如js中可以用对象(类名)点出属性(方法)一样
b.JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用,除非你只想alert();

JSON对象

var obj = { "name": "xiaoling", "age": "18" };

JSON字符串

var obj = “{ "name": "xiaoling", "age": "18" }”;

Q:如何将JSON字符串转为JSON对象?


方法一:$.parseJSON()

var str='{"name":"xiaoling","age":"18"}';
var obj=jQuery.parseJSON(str);
console.log(obj.name);   //xiaoling

*方法二:JSON.parse()*

var str='{"name":"xiaoling","age":"18"}';
var obj=JSON.parse(str);
console.log(obj.name);

*方法三:eval()*

var str='{"name":"xiaoling","age":"18"}';
var obj=eval('('+str+')');
console.log(obj.name);
为什么要 eval这里要添加 “(“(“+data+”)”);/呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:

Q:如何将对象转为JSON格式的对象?


*方法一:JSON.stringify(obj)*

 var obj={name:"xioamei", age:18}
console.log("obj="+JSON.stringify(obj)); 

方法二利用nodeJS中的util模块中的 util.inspect(obj[,options])

该方法中的options有以下几个参数:

colors:默认为false,设为true,将会以ANSI颜色的代码风格输出。

showHidden:默认为false,设为true,则对象的不可枚举的属性将会被显示出来。

depth:默认为2,告诉inspect格式化对象的时候递归多少次。复杂对象的时候很有用。

customInspect:默认为true,设为false,则定义在被检查对象上的inspect(depth,opts)方法将不会被调用。

npm install util

新建一个js文件 如此结构:

img

util的代码:

[复制代码](javascript:void(0)😉

var util=require('util');
var obj={
     name:'xiaomei',
     age:18,
     family:{
        sister:{
            name:'niu',
            age:17
        },
        brothers:{
            name:"lis",
            age:15,
            b_family:{
                  wife:"xiaoling",
                children:"2"
            }
        }
    }
}
console.log("obj="+util.inspect(obj,{color:true,depth:4}));

[复制代码](javascript:void(0)😉

img

更多使用内容点击>

参考原文:https://www.cnblogs.com/niuxiaoling/p/7993889.html?ivk_sa=1024320u

原文地址:http://www.cnblogs.com/javaxubo/p/16862915.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性