Pablo Lozano Asked: 2020-05-17 08:36:49 +0800 CST 2020-05-17 08:36:49 +0800 CST 2020-05-17 08:36:49 +0800 CST JSON 和对象有什么区别? 772 在谈论数据结构时,尤其是在与 AJAX 相关的上下文中,术语JSON和对象(甚至JSON 对象)通常可以互换使用。 两者有什么区别? JSON是Javascript 对象还是其他东西? javascript 2 Answers Voted Best Answer Pablo Lozano 2020-05-17T08:36:49+08:002020-05-17T08:36:49+08:00 我假设读者对 Javascript 有一些基本的了解: //así declaramos un objeto básico en Javascript let objeto={ atributo: 'valor'} 他们是不一样的 JSON是JavaScript Object Notation的首字母缩写,它是一种用于数据交换的轻量级文本格式。这是什么意思?好吧,如果我们看到以下文字 <lista-nodos> <nodo id="1">texto1</nodo> <nodo id="3">texto2</nodo> <nodo id="5">texto1</nodo> </lista-nodos> 每个程序员都清楚这是XML 格式的文本。好吧,JSON 只不过是一种不同的格式,但具有相同的功能。该 XML 的等价物可能类似于: [ { "id": "1", "valor": "texto1"}, { "id": "3", "valor": "texto2"}, { "id": "5", "valor": "texto1"} ] 顾名思义,这个符号类似于我们在 Javascript 中用来创建对象的符号: const datos=[ { id: "1", valor: "texto1"}, { id: "3", valor: "texto2"}, { id: "5", valor: "texto1"} ]; datos.forEach(dato=> console.log('elemento:',dato.id,dato.valor)) console.info("tipo de dato=", typeof(datos)) 但是 JSON 是,我在这里重复自己,文本: //esto es un texto en formato JSON const datosJson=`[ { "id": "1", "valor": "texto1"}, { "id": "3", "valor": "texto2"}, { "id": "5", "valor": "texto1"} ]`; console.log(datosJson); console.info("tipo de dato=", typeof(datosJson)) JSON 格式比 Javascript 代码更具限制性: string类型的所有值都必须用双引号引起来,不允许使用单引号。 同样,所有键(属性名称)必须用双引号括起来。 它不支持任何类型的注释(不像 XML,我们可以在其中使用<!-- Comentarios-->) 数值必须以十进制为基数,它不允许前导零(这可能会认为该数字是八进制的)。 不支持值undefined。 我们如何将文本转换为可操作的对象?以及我们如何进行反向操作? 使用以下功能: JSON.parse(<texto>)它返回从 JSON 格式的字符串创建的对象。 JSON.stringify(obj)它返回一个带有对象属性的 JSON 格式的字符串obj。如果obj它具有作为函数的属性,它们将被忽略。 //texto con formato inválido const datosJson=`[ { "id": "1", valor: "texto1"}, { "id": "3", valor: "texto2"}, ]`; try { const datos=JSON.parse(datosJson); } catch(error) { console.log('Falla porque las claves valor no está entre comillas') } const datosJson2=`[ { "id": 1, "valor": "texto1"}, { "id": 3, "valor": "texto2"}, { "id": 5, "valor": "texto1"} ]`; //transformamos a objeto const d=JSON.parse(datosJson2); console.log(d[0].id); //añadimos un elemento d.push({id:4,valor:'otro texto'}); //transformamos el objeto de nuevo a JSON console.log(JSON.stringify(d)); 因此,虽然 JSON 起源于 Javascript 语言,但它只不过是一种应用程序之间发送数据的方式,不一定用 Javascript 来实现:任何编程语言都可以处理 JSON(就像 XML 一样)以获取所需的信息. 使用 JSON 的两个日常示例是: AJAX:当我们从服务器发送或接收数据时,信息通常以纯文本形式发送,如果接收对象的语言不知道如何解释它(很多时候,当从第三方的 API,我们甚至不知道使用的是什么编程语言)。 Web Storage:当我们要在用户的浏览器中保存数据时,使用localStorage或,和sessionStorage方法只对 type 有效,因此需要将我们要保存的对象转换为文本。setItemgetItemstring P. C. 2022-03-26T06:26:56+08:002022-03-26T06:26:56+08:00 我想给出一个更通俗的答案,您可以将其作为非程序员或初学者的示例。 - 对象:它仅限于代码,它被初始化并在程序执行期间与对象一起工作。对象将根据相应的(面向对象的)语言的语义规则进行格式化,其中定义了对象的代码是在该语言中编写的。 - JSON:是用作输入输出的“文件”,用于初始化或保存对象的状态或值,因为它是“标准”,所以它有自己定义的语义规则。这种格式的标准化使 JSON 在不同的编程语言中兼容。
我假设读者对 Javascript 有一些基本的了解:
他们是不一样的
JSON是JavaScript Object Notation的首字母缩写,它是一种用于数据交换的轻量级文本格式。这是什么意思?好吧,如果我们看到以下文字
每个程序员都清楚这是XML 格式的文本。好吧,JSON 只不过是一种不同的格式,但具有相同的功能。该 XML 的等价物可能类似于:
顾名思义,这个符号类似于我们在 Javascript 中用来创建对象的符号:
但是 JSON 是,我在这里重复自己,文本:
JSON 格式比 Javascript 代码更具限制性:
<!-- Comentarios-->
)undefined
。我们如何将文本转换为可操作的对象?以及我们如何进行反向操作?
使用以下功能:
JSON.parse(<texto>)
它返回从 JSON 格式的字符串创建的对象。JSON.stringify(obj)
它返回一个带有对象属性的 JSON 格式的字符串obj
。如果obj
它具有作为函数的属性,它们将被忽略。因此,虽然 JSON 起源于 Javascript 语言,但它只不过是一种应用程序之间发送数据的方式,不一定用 Javascript 来实现:任何编程语言都可以处理 JSON(就像 XML 一样)以获取所需的信息.
使用 JSON 的两个日常示例是:
localStorage
或,和sessionStorage
方法只对 type 有效,因此需要将我们要保存的对象转换为文本。setItem
getItem
string
我想给出一个更通俗的答案,您可以将其作为非程序员或初学者的示例。
- 对象:它仅限于代码,它被初始化并在程序执行期间与对象一起工作。对象将根据相应的(面向对象的)语言的语义规则进行格式化,其中定义了对象的代码是在该语言中编写的。
- JSON:是用作输入输出的“文件”,用于初始化或保存对象的状态或值,因为它是“标准”,所以它有自己定义的语义规则。这种格式的标准化使 JSON 在不同的编程语言中兼容。