JSON与JavaScript比较

目录

JSON是什么

JSON对象和JSON字符串区别

这里举一个很常见的报错 uncaught SyntaxError 

JSON对象与JavaScript对象有什么不同

JSON对象的创建格式和JavaScript对象创建格式有什么不同

如何理解JSON和JavaScript的关系、

JSON语法规则

昨天在手动封装jQuery库时,想将Ajax封装到jQuery库中,发现JSON对象和js对象模糊不清,所以特此复习总结以下知识点


JSON是什么

  • JSON,全称是 JavaScript Object Notation,即 JavaScript对象标记法。

  • JSON是一种轻量级(Light-Meight)、基于文本的(Text-Based)、可读的(Human-Readable)格式。

  • JSON 的名称中虽然带有JavaScript,但这是指其语法规则是参考JavaScript对象的,而不是指只能用于JavaScript 语言。

  • 因为JSON本身就是参考JavaScript 对象的规则定义的,其语法与JavaScript定义对象的语法几乎完全相同。

        JSON常被用于在不同语言间传递数据,所以它仅仅是 数据的一种表现形式,或者格式;比如Java语言和JavaScript之间传递数据,我们就可以使用JSON来实现(至于如何实现,看完下文你将会明白。。。);


JSON对象和JSON字符串区别

如何区分JSON对象和JSON字符串呢?这个问题困扰很多初学者,如何区分呢?我们可以用过两者本质区分:

  • JSON字符串的本质是个字符串,即它是被双引号或单引号括起来的;
  • 然而JSON对象本质是个对象,是个对象那么就是可以通过 [对象.属性名] 的方式访问对象的属性或者方法;

二者之间是可以转换的,转换方式(使用JavaScript的内置对象JSON):

  • JSON.parse(jsonstring);//该方法可以实现将JSON字符串jsonstring 转为JSON对象;
  • JSON.stringify(jsonobj);//该方法可以实现将JSON对象转换为JSON字符串;

代码演示:

Json字符串转化为Json对象( JSON.parse() )

var  str = '{"name":"shily","sex":"女","age":"23"}';
var  strToObj = JSON.parse(str);
console.log(strToObj);
console.log(typeof strToObj);
console.log(strToObj.name)

Json对象转化为Json字符串( JSON.stringify() )

var  obj = {"name":"shily","sex":"女","age":"23"}//json对象
var  objToStr = JSON.stringify(obj);
console.log(objToStr);
console.log(typeof objToStr)

这里举一个很常见的报错 uncaught SyntaxError 

直接上代码:(你可以自己琢磨一下下列代码是否会报错?报错原因是什么?)

let json = `{"name":"张三","age":undefined}`;
let obj = JSON.parse(json);

上述代码会报错:报错原因JSON对象格式错误,JSON不支持undefined,这涉及到JSON对象常见格式,下面会讲: 

JSON对象与JavaScript对象有什么不同

  • 语法不同:JavaScript对象使用大括号{ }定义,而JSON对象使用花括号{ }或方括号[ ]定义。
  • 属性名引号不同:JavaScript对象的属性名可以不用引号或使用单引号或双引号引起来,而JSON对象的属性名必须使用双引号引起来。
  • 数据类型不同:JavaScript对象可以包含任意类型的数据,包括函数、日期、正则表达式等,而JSON对象只支持简单数据类型,如字符串、数字、布尔值、数组和对象。
  • 应用场景不同:JavaScript对象通常用于编程语言内部的数据结构,而JSON对象通常用于数据传输和存储。在网络传输数据时,常使用JSON对象进行数据交换。

JSON对象的创建格式和JavaScript对象创建格式有什么不同

  • JSON 对象的创建格式和 JavaScript 对象的创建格式很相似,但有一些细微的差异:
  • JSON 对象必须使用双引号包裹属性名,而 JavaScript 对象可以使用双引号或单引号。
  • JSON 对象的属性值只能是以下数据类型之一:字符串、数值、布尔值、null、数组或对象。而 JavaScript 对象的属性值可以是任意数据类型,包括函数和 undefined。
  • JSON 对象不能包含函数、变量、表达式等 JavaScript 特有的语法,而 JavaScript 对象可以包含这些语法。

例如,创建一个 JSON 对象:

{
  "name": "Tom",
  "age": 20,
  "isStudent": true,
  "hobbies": ["reading", "swimming"],
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "state": "NY"
  }
}

创建一个 JavaScript 对象:

var person = {
  name: 'Tom',
  age: 20,
  isStudent: true,
  hobbies: ['reading', 'swimming'],
  address: {
    street: '123 Main St',
    city: 'New York',
    state: 'NY'
  },
  sayHello: function() {
    console.log('Hello');
  }
};

如何理解JSON和JavaScript的关系、

通过上面的了解,我们可以得出以下结论:

        可以认为JSON对象是JS对象的一种表示方式。JSON是一种文本格式,用于在网络中传输数据。在JavaScript中,可以使用JSON.parse将JSON字符串转换为JS对象,也可以使用JSON.stringify将JS对象转换为JSON字符串。因此,JSON对象可以被视为JS对象的一种扩展,用于表示和传输数据。


JSON语法规则

JSON的语法规则如下:

  • 1.数据在键值对中,键值对之间用逗号分隔。
  • 2.大括号{}保存对象,用于保存无序的键值对。
  • 3.中括号[]保存数组,用于保存有序的元素列表。
  • 4.键名必须用双引号包围,值可以是字符串、数字、布尔值、null、对象或数组。
  • 5.数字可以是整数或浮点数。
  • 6.字符串必须用双引号包围。
  • 7.布尔值用true和false表示。
  • 8. null表示空值。
  • 9.JSON的数据格式是严格的,不允许出现注释或多余的逗号。

最后说个比较小笨的事情:有没有人在JavaScript中测过以下代码的?

var person={"name":"shily","sex":"女","age":"23"}
console.log(typeof person);

        本来我认为且期待输出的是JSON,但是实际输出的确实Object,造成这个乌龙的原因是我没有学明白JavaScript的数据类型,JavaScript中并没有JSON这个对象类型;

        JSON对象在JavaScript中本质是个对象(object);

猜你喜欢

转载自blog.csdn.net/m0_64231944/article/details/129810651