Comprender qué es JSON en un artículo

JSON


JSON (Notación de objetos de JavaScript) es un formato de intercambio de datos ligero que utiliza un formato de texto que es completamente independiente de los lenguajes de programación para almacenar y representar datos.

Antes de JSON, usábamos XML para transferir datos (la traducción de XML es Lenguaje de marcado extensible, que es un formato de texto sin formato adecuado para transferir datos en la red), pero a medida que XML se volvió más y más complejo, la gente comenzó a inventar el formato de intercambio de datos más fácil. , finalmente, en 2002, Douglas Crockford (Douglas Crockford) inventó JSON, solo debemos recordar que JSON es un subconjunto de JavaScript, puede usar JSON directamente en JavaScript para lograr un cambio de serialización y deserialización


Primero observe los tipos de datos en JSON, que son básicamente los mismos que en JavaScript (¡Atención, palabras en negrita!)

escribe un nombre explicar
número Tipo numérico, igual que el número de JavaScript
booleano Booleano, solo dos valores verdadero y falso
cadena Tipo de cadena, no hace falta decirlo, pero tenga cuidado de usar " ", no ' '
nulo El valor nulo no significa nada
formación Matriz, datos encerrados por []
objeto Objeto, igual que el objeto en JavaScript, use {}, cada uno de los cuales usa " "
/* JSON 标准格式:
{
	"键名称1": 100,
	"键名称2": "我是字符串,使用双引号",
	"键名称3": true,
	"键名称4": null,
	"键名称5": [200, "数组中字符串", null],
	"键名称6": {"对象健名称1": 200, "对象健名称2": "我也是字符串"}
} */

//看不懂怎么办(我书读的少,你别骗我),那我下面写一个例子就能明白了
'use strict'

let Mike = {
    
    
    name: 'Mike',
    age: 21,
    school: "清华大学"
};

let obj = {
    
    
    key1: 100,
    key2: 'Hello world',
    key3: false,
    key4: null,
    key5: [200, '300', [true, false]],
    key6: Mike
};

/* 将 JavaScript 对象转换成 JSON 字符串,实现序列化:
JSON.stringify(value, replacer, space)
value:		待序列化的对象;

replacer:	控制如何筛选对象的键值,可以是函数或者数组(可选);
			数组里可以放想要筛选的键值,例如["key1", "key2"],注意请使用 ' ' 或者 " "
            函数就是处理键值,比方说可以在变成 JSON 字符串的时候把所有的英文键改成大写
             
space:		输出文本添加缩进、空格和换行符(可选)
			就是让格式好看点 */

let obj_JSON = JSON.stringify(obj, null, '\n');		//使用一个空格填充
console.log(obj_JSON);



/* 将字符串变成 JavaScript 对象,实现反序列化
JSON.stringify(value, reviver) 
value:待转换的字符串;

reviver:和 replacer 蛮像的,但是只能是函数(可选)*/

let obj_JS_object = JSON.parse(obj_JSON);
console.log(obj_JS_object);

Salida de la consola:

31



Nota IMPORTANTE:

  • Incluso si la cadena en el objeto usa ' ', se convertirá en " " después de convertir a JSON
  • Agregará " " a cada tecla


De hecho, dominar los puntos de conocimiento anteriores es suficiente para los principiantes, el siguiente es un conocimiento complementario

/* 上边我们介绍了可以设置 stringify() 函数的 replacer 参数,在一定程度上控制序列化的结果
   现在我们可以完全实现自定义序列化,那就是使用 toJSON() 函数:toJSON() 函数可以返回一个 JSON 字符串 */

/* 对于下面的 Book 对象,现在我只想序列化 name 和 price */
//1、通过设置 replacer 的方法
let Book = {
    
    
    name: '入门 JavaScript',
    ISBN: 12345678901234,
    price: 99
};

let Book_JSON = JSON.stringify(Book, ["name", "price"]);
console.log("使用 replacer 实现自定义序列化 ↓↓↓");
console.log(Book_JSON);



//2、在 Book 对象内部重写 toJSON() 函数

let Book = {
    
    
    name: '入门 JavaScript',
    ISBN: 12345678901234,
    price: 99,
    //重写 toJSON() 函数,直接返回我们自定义的结果(只要符合格式要求,键值名字随便改,下面我就把首字母变成中文,但是尽量不要使用中文,这里只是为了示范)
    toJSON: function () {
    
    
        return {
    
    
            "书名": "入门 JavaScript",
            "价格": 99
        }
    }
};

let Book_JSON = JSON.stringify(Book);
console.log("重写 toJSON() 函数实现自定义序列化 ↓↓↓");
console.log(Book_JSON);

Visualización de resultados

32


33


Tenga en cuenta que una vez que se anula la función toJSON(), no es factible establecer también el parámetro de reemplazo . Puedes entenderlo como una cuestión de prioridad.

Así que primero hablemos mucho sobre JSON, solo tenga un concepto, y estará familiarizado con él si lo usa más en el futuro.

Supongo que te gusta

Origin blog.csdn.net/qq_52174675/article/details/122648130
Recomendado
Clasificación