当前位置: 首页 > 编程笔记 >

JavaScript中的对象与JSON

韩恺
2023-03-14
本文向大家介绍JavaScript中的对象与JSON,包括了JavaScript中的对象与JSON的使用技巧和注意事项,需要的朋友参考一下

简介

JSON即JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。
JSON是一种数据交换格式,像XML和YAML一样是一种在各种不同语言间传递结构化信息的方式。从另一方面来说,javascript对象是javascript语言中的一种数据类型,就像PHP中的数组、C++中类和结构体。

定义JSON与javascript对象

在javascript程序中定义对象的时候,对象的属性名可以加双引号也可以不加双引号。如果属性名包含特殊字符(如!、if等)的时候,就必须加双引号。
在定义JSON的时候,属性名必须加双引号。

代码示例:

1.定义javascript对象


var obj={name:"tudouya","sex":"man"};  #两个属性可以加双引号也可以不加

var obj={"!":"hello world"};  #属性名包含特殊字符时必须加双引号


2.定义JSON字符串

var jsonString={"name":"tudouya"};  #定义JSON时必须加双引号

javascript对象转换为JSON

1.javascript对象转换为JSON

我们可以使用javascript的内置函数将javascript对象转换为JSON,这个函数就是JSON.stringify().
代码示例:


var obj={name:"tudouya",sex:"man"};

var jsonObj=JSON.stringify(obj);

console.log(jsonObj);

##输出结果为:{"name":"tudouya","sex":"man"}


在将javascript对象转换为JSON的时候,有一点是需要我们注意的:
如果对象中包含有值为函数和日期的属性,JSON会忽略值为函数的属性,并将值为日期的属性转换为字符串
代码示例:

var obj={

 name:"tudouya",

 birthday:new Date(),

 action:function (){

  document.write("walk");

 }

};

var jsonObj=JSON.stringify(obj);

console.log(jsonObj);

##输出结果为:{"name":"tudouya","birthday":"2014-08-12T10:05:00.497Z"}

javascript中解析JSON

在老版本的JS中,大家通常都使用eval()函数来解析JSON,但是ECMAScript5给我们提供了一个解析JSON的新函数JSON.parse()。

这个函数的使用方法比较简单,大家可以自行尝试。当对某个JSON字符串应用该函数以后,该JSON就被转换为javascript的对象,也就是说当用typeof运算符查看该函数的类型时,返回的值是Object。
同样有一点需要注意的是,该函数是ECMAScript5以后才支持的,如果是旧版本的浏览器那么可能不支持该函数。解决的方法是加载一个实现该函数的js文件,即json2.js。如果使用的是JQuery框架,jQuery.parseJSON(),该函数调用了JSON.parse()方法。
关于使用eval()方法解析JSON,这个等深入学习后会记录下来。

一个很重要的概念

作为一个前端菜鸟,经常听到别人说“JSON对象”,但是其实并没有“JSON对象”这个概念,JSON真正的表现形式是字符串。

 类似资料:
  • 问题内容: 我想清楚地了解Javascript对象和JSON字符串之间的基本区别。 假设我创建了以下JS变量: Q1。 密钥/属性名称在带/不带引号的情况下均有效吗?(例如) 如果是,有什么区别? 问题2:如果我使用转换上述对象,原始JS对象和JSON有什么区别? 我觉得他们几乎一样。请详细说明。 问题3:对于解析JSON字符串,是否建议使用以下方法? 问题答案: 密钥/属性名称在带引号和不带引号

  • 问题内容: 我刚刚发现了chromestatus.com,在失去了一天的时间后,发现了以下功能条目: 映射:映射对象是简单的键/值映射。 那让我感到困惑。常规JavaScript对象是字典,那么它与字典有何不同?从概念上讲,它们是相同的(根据 Map和Dictionary之间的区别是什么?) chromestatus文档参考也无济于事: 映射对象是键/值对的集合,其中键和值都可以是任意ECMASc

  • 我刚刚发现了这个特性: Map:Map对象是简单的键/值映射。 映射对象可以按插入顺序迭代其元素。Map对象必须使用哈希表或其他机制来实现,这些机制平均提供的访问时间与集合中的元素数成次线性关系。本地图对象规范中使用的数据结构仅用于描述地图对象所需的可观察语义。它并不打算成为一个可行的实施模式。 …对我来说仍然像是一个对象,所以很明显我错过了什么。 为什么JavaScript获得了一个(支持良好的

  • 问题内容: 假设您有一个非常简单的数据结构: …并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择: 如果您要存储(或希望可能拥有)多个“价值”部分(例如,增加他们的年龄等),显然第二或第三种选择是可行的,因此,为了论证,让我们假设在此结构中再也不需要任何数据值了。您选择哪一个,为什么? 编辑 :该示例现在显示最常见的情况:非顺序ID。 问题答案: 每个解决方案都有其用例。

  • 问题内容: 在我的脚本中,有必要创建一个哈希表,我在Google中搜索了此表。为此,大多数人都建议使用JavaScript对象。问题是,哈希表中的某些键具有“”。在他们中。我可以使用关联数组轻松创建这些键。 我不明白为什么关联数组不好。在我查看的站点中提到的第一件事是length属性。我来自使用散列的Perl背景。最常见的用途是从键中获取值,检查键是否存在,删除键值对,添加键值对。如果这些是我的常

  • 本文向大家介绍举例说明JavaScript中的实例对象与原型对象,包括了举例说明JavaScript中的实例对象与原型对象的使用技巧和注意事项,需要的朋友参考一下 首先声明:javascript中每个对象都有一个constructor属性和一个prototype属性。constructor指向对象的构造函数,prototype指向使用构造函数创建的对象实例的原型对象。 在这段代码中会报错,sayN