`
mjbb
  • 浏览: 87075 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

json与js对象的一些对比与区别

阅读更多
文本生成json对象,必须在外面加一对括号。

因为JSON 是 javascript 的一个子集,所以,在javascript 中使用JSON是非常简单的。
    
    
js 代码
 
var myJSONObject = {"bindings": [   
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},   
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},   
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}   
    ]   
};   

在上面的例子中,我们创建了只包含一个成员 "bindings" 的一个对象,bindings 则包含了一个由3个对象组成的数组。这3个对象都包含3个成员:"ircEvent", "method","regex"。

在javascript 中, 成员可以通过“点号”来获取。
比如:

js 代码
myJSONObject.bindings[0].method   

通过eval() 函数可以将JSON字符串转化为对象。

js 代码
var myObject = eval('(' + myJSONtext + ')');   

eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问
题。eval 的使用是基于传入的代码参数是可靠的假设的,有一些情况下,可能客户端是不可
信任的。

如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 
JSON 文本。所以是更安全的。

js 代码
 
var myObject = JSON.parse(myJSONtext, filter);   

可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如:


js 代码
myData = JSON.parse(text, function (key, value) {        

return key.indexOf('date') >= 0 ? new Date(value) : value;    });  

stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。

js 代码
var myJSONText = JSON.stringifier(myObject); 





//理解二号:
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 
JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API
 或工具包。 
JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括
号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’
 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html


举个简单的例子:

js 代码
1.function showJSON() {   
2.    var user =   
3.     {   
4.        "username":"andy",   
5.        "age":20,   
6.        "info": { "tel": "123456", "cellphone": "98765"},   
7.        "address":   
8.             [   
9.                 {"city":"beijing","postcode":"222333"},   
10.                 {"city":"newyork","postcode":"555666"}   
11.             ]   
12.     }   
13.       
14.     alert(user.username);   
15.     alert(user.age);   
16.     alert(user.info.cellphone);   
17.     alert(user.address[0].city);   
18.     alert(user.address[0].postcode);   
19.}   
这表示一个user对象,拥有username, age, info, address 等属性。

同样也可以用JSON来简单的修改数据,修改上面的例子

js 代码
1.function showJSON() {   
2.    var user =   
3.     {   
4.        "username":"andy",   
5.        "age":20,   
6.        "info": { "tel": "123456", "cellphone": "98765"},   
7.        "address":   
8.             [   
9.                 {"city":"beijing","postcode":"222333"},   
10.                 {"city":"newyork","postcode":"555666"}   
11.             ]   
12.     }   
13.       
14.     alert(user.username);   
15.     alert(user.age);   
16.     alert(user.info.cellphone);   
17.     alert(user.address[0].city);   
18.     alert(user.address[0].postcode);   
19.       
20.     user.username = "Tom";   
21.     alert(user.username);   
22.}   
JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。

js 代码
1.function showCar() {   
2.    var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");   
3.     alert(carr.toJSONString());   
4.}   
5.  
6.function Car(make, model, year, color)        {   
7.     this.make   =   make;   
8.     this.model   =   model;   
9.     this.year   =   year;   
10.     this.color   =   color;   
11.}   
可以使用eval来转换JSON字符到Object

js 代码
1.function myEval() {   
2.    var str = '{ "name": "Violet", "occupation": "character" }';   
3.    var obj = eval('(' + str + ')');   
4.     alert(obj.toJSONString());   
5.}   
或者使用parseJSON()方法

js 代码
1.function myEval() {   
2.    var str = '{ "name": "Violet", "occupation": "character" }';   
3.    var obj = str.parseJSON();   
4.     alert(obj.toJSONString());   
5.}   
分享到:
评论

相关推荐

    json比对js插件

    JSON 对比工具,优秀的JSON对比工具,自动格式化,对比JSON不同处,高亮显示,代码经过优化

    JSON与JS对象的区别与对比

    JSON是什么?JSON是JS的一种简单数据格式,JSON是JavaScript原生格式,它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    json-diff:一个用于前端展示的json对比库,提供丰富的对比操作

    json-diff 比较两个json对象的差异,并获得出色的差异视图 例子

    详解JS 比较两个Json对象的值是否相等的实例

    主要介绍了JS 比较两个Json对象的值是否相等的实例,有需要的朋友可以参考一下

    Newtonsoft.Json.zip

    当我们使用Json的时候,很多时候会涉及到几个序列化对象的使用:DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET即 Newtonsoft.Json。大多数人都会选择性能以及通用性较好 Json.NET,这个不是微软的...

    Newtonsoft.Json-master.zip

    当我们使用Json的时候,很多时候会涉及到几个序列化对象的使用:DataContractJsonSerializer、JavaScriptSerializer 和Json.NET即Newtonsoft.Json。大多数人都会选择性能以及通用性较好Json.NET,这个不是微软的类库...

    JS中如何比较两个Json对象是否相等实例代码

    在js前端面试过程中,经常会遇到这样的笔试题:JS中如何比较两个Json对象是否相等实例代码,下面小编抽点时间给大家整理下,一起看看吧。 1.先准备三个工具方法,用于判断是否是对象类型,是否是数组,获取对象长度 ...

    vscode-sort-json:VSCode扩展以对JSON对象进行排序

    选择一个JSON对象(请注意,它使用完整的行,因此请确保所选的行是有效的JSON对象) 运行扩展(Cmd + Shift + P =>排序JSON) 上下文菜单 如果“上下文菜单”中的条目过多,则可以通过将其添加(并编辑)到VSCode首...

    JS实现json数组排序操作实例分析

    本文实例讲述了JS实现json数组排序操作。分享给大家供大家参考,具体如下: 有时需要根据json对象的某个属性排序json数组,javascript端有sort这个函数,具体可以参考:...

    Newtonsoft.Json.dll

    当我们使用Json的时候,很多时候会涉及到几个序列化对象的使用:DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET即 Newtonsoft.Json。大多数人都会选择性能以及通用性较好 Json.NET,这个不是微软的...

    monaco-json:摩纳哥编辑器的JSON语言支持

    基于JSON模式或通过查看同一文件中的相似对象的代码完成 悬停,基于JSON模式 验证:语法错误和架构验证 格式设定 文件符号 语法高亮 匹配包含以下format: "color-hex"'的模式的所有属性的颜色修饰符format: "color-...

    JavaScript 解析Json字符串的性能比较分析代码

    解析时用到的方法一般是eval或者new function,而目前IE8和Firefox3.1又内置了原生的JSON对象(据说会有一定的性能提升)。那我们在实际使用的时候怎样从这三种方法(因为性能问题,不考虑用javascript实现的解析)...

    JS判断两个数组或对象是否相同的方法示例

    本文实例讲述了JS判断两个数组或对象是否相同的方法。分享给大家供大家参考,具体如下: JS 判断两个数组是否相同 要判断2个数组是否相同,首先要把数组进行排序,然后转换成字符串进行比较。 JSON.stringify([1,2,...

    compare-json-keys:比较JSON键

    比较JSON键 此模块比较两个JSON对象的键(而不是值)。 如果键相同,则返回true ,否则返回false 。安装npm install --save compare-json-keys用法var compareJsonKeys = require ( 'compare-json-keys' ) ;var obj1...

    深入理解 JavaScript 中的 JSON

    我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看,写完再去仔细对比你的...

    difftool:nodejs diff模块,用于比较JSON或xml,在测试中尤其有用

    diff模块比较和比较JSON和XML 用法 $ npm install difftool --save var difftool = require('difftool'); difftool.diff(lhs,rhs,schema, options, function(result) { } lhs和rhs是要比较的两个对象。 模式-...

Global site tag (gtag.js) - Google Analytics