JSON Explicación detallada de la tecnología principal de JavaScript

¿Qué es JSON?

JSON (JavaScript Object Notation, JS Object Notation) es un formato de intercambio de datos ligero. Se basa en un subconjunto de ECMAScript (Asociación Europea de Fabricantes de Computadoras, la especificación js desarrollada por la Asociación Europea de Computadoras) y utiliza un formato de texto que es completamente independiente del lenguaje de programación para almacenar y representar datos. La simplicidad y la clara jerarquía hacen de JSON un lenguaje de intercambio de datos ideal. Es fácil de leer y escribir para las personas, y también es fácil de analizar y generar para las máquinas, y puede mejorar efectivamente la eficiencia de la transmisión de la red. 

JSON se deriva de JavaScript y es un formato ligero (Light-Meight), basado en texto (Text-Based) y legible por humanos (Human-Readable).

En el desarrollo actual, hay dos formatos JSON XML que se pueden usar para el intercambio de datos.

JSON es una sintaxis para almacenar e intercambiar información textual. Al igual que XML, JSON es más pequeño, más rápido y más fácil de analizar que XML.

 Entonces, en pocas palabras, la descripción de JSON se resume de la siguiente manera:

  • JSON es un formato de datos independiente de cualquier lenguaje de programación
  • es un formato ligero para almacenar y transferir datos
  • La gramática es autodescriptiva, fácil de leer y comprender para los humanos.

sintaxis JSON

Sintaxis básica:

  • Las matrices se representan mediante corchetes "[]"
  • Los objetos (0bject) se representan mediante llaves "{}"
  • Pares de nombre/valor (nombre/valor) combinados en matrices y objetos
  • El nombre ( name ) se coloca entre comillas dobles y el valor (value) tiene cadenas, números, valores booleanos, valores nulos, objetos y matrices.
  • Los datos paralelos están separados por comas ","
  • Un par nombre/valor consiste en el nombre del campo (entre comillas dobles), seguido de dos puntos, luego el valor

hay que tener en cuenta es:

JSON no admite comentarios. Agregar comentarios a JSON no tiene efecto

El tipo de archivo del archivo JSON es .json

El tipo de texto JSON  MIME es application/json

Obtener datos JSON

 JSON existe en forma de objetos, y los siguientes métodos se pueden usar para obtener datos JSON directamente:

1. objeto json nombre clave

2. objeto json ["nombre clave"]

3. Objeto de matriz [Índice]

4. atravesar 

Ejemplo de código:

//定义基本格式
      var person = { name: "张三", age: 23, gender: true };
      var persons = [
        { name: "张三", age: 23, gender: true },
        { name: "李四", age: 24, gender: true },
        { name: "王五", age: 25, gender: false },
      ];

      //获取person对象中所有的键和值
      //for in 循环
      /* for(var key in person){
          //这样的方式获取不行。因为相当于  person."name"
          //alert(key + ":" + person.key);
          alert(key+":"+person[key]);
          }*/

      //获取persons中的所有值
      for (var i = 0; i < persons.length; i++) {
        var p = persons[i];
        for (var key in p) {
          console.log(key + ":" + p[key]);
        }
      }

 La salida es:

 Análisis y serialización de JSON (en JavaScript)

Primero imprima el objeto JSON en la consola para ver qué hay, como se muestra en la figura:

 Obviamente, los objetos JSON solo tienen dos métodos en JavaScript: parse y stringify. Estos dos métodos se describirán en detalle más adelante.

El concepto de serialización: La serialización es el proceso de convertir un objeto en una secuencia de bytes. Una vez serializado el objeto, puede transmitirse en la red o guardarse en el disco duro.

Serialice el objeto en una cadena json: JSON.stringify(objeto json);

Deserialización: Deserialice la cadena json en un objeto: JSON.parse(str)

JSON.parse

Introducción a la API: se utiliza para analizar cadenas JSON, construir valores u objetos descritos por cadenas  JavaScript , y se informará un error si la cadena entrante no se ajusta a la especificación JSON

gramática:

JSON.parse(str, reviver);
  • str: la cadena JSON para analizar
  • reviver: una función opcional  function(key,value), el primer parámetro y el segundo parámetro de la función representan la clave y el valor del par clave-valor respectivamente, y el valor se puede convertir (el valor de retorno de la función se considera el valor procesado)

Ejemplo de código:

// JSON.parse() 解析JSON字符串, 将JSON转换为对象
      let json = '{"name": ["js", "webpack"], "age": 22, "gridFriend": "ljj"}';
      console.log(JSON.parse(json)); 
      // {name: Array(2), age: 22, gridFriend: 'ljj'}

      // 第二个参数是一个函数,key和value代表每个key/value对
      let result = JSON.parse(json, (key, value) => {
        if (key == "age") {
          return `年龄:${value}`;
        }
        return value;
      });
      console.log(result);
      //{name: Array(2), age: '年龄:22', gridFriend: 'ljj'}

 JSON.stringify

Introducción a la API: convertir un  JavaScript objeto o valor en una cadena JSON

Si se especifica una función  replacer , reemplaza opcionalmente los valores, o si  replacer se especifica una matriz, incluye opcionalmente solo las propiedades especificadas por la matriz.

gramática:

JSON.stringify(value, replacer, space)

valor: el valor que se serializará en una cadena JSON

reemplazante:

  • Si el parámetro es una función, cada atributo del valor serializado será convertido y procesado por la función durante el proceso de serialización.
  • Si el parámetro es una matriz, solo los nombres de propiedad contenidos en la matriz se serializarán en la cadena JSON final.
  • Si este parámetro es nulo o no se proporciona, se serializarán todas las propiedades del objeto.

espacio: especifica la cadena en blanco para la sangría, que se utiliza para embellecer la salida

  • Si el argumento es un número, representa cuántos espacios; el límite superior es 10. Si el valor es menor que 1, significa que no hay espacio
  • Si el parámetro es una cadena (cuando la longitud de la cadena supera las 10 letras, tome las primeras 10 letras), la cadena se tratará como un espacio
  • Si no se proporciona este parámetro (o es nulo), no habrá espacios

Ejemplo de código:

      let obj = {
        name: "jsx",
        age: 22,
        lesson: ["html", "css", "js"],
      };
      let json = JSON.stringify(obj);
      console.log(json);
      // {"name":"jsx","age":22,"lesson":["html","css","js"]}

      // 第二个参数replacer 为函数时,被序列化的值得属性都会经过该函数转换处理
      function replacer(key, value) {
        if (typeof value === "string") {
          return undefined;
        }
        return value;
      }
      let result = JSON.stringify(obj, replacer);
      console.log(result);
      // {"age":22,"lesson":[null,null,null]}

      // 当replacer参数为数组,数组的值代表将被序列化成 JSON 字符串的属性名
      let result1 = JSON.stringify(obj, ["name", "lesson"]);
      // 只保留 “name” 和 “lesson” 属性值
      console.log(result1);
      // {"name":"jsx","lesson":["html","css","js"]}

      // 第三个参数spcae,用来控制结果字符串里面的间距
      let result2 = JSON.stringify(obj, null, 4);
      console.log(result2);
      /*{
          "name": "jsx",
          "age": 22,
          "lesson": [
              "html",
              "css",
              "js"
          ]
      }*/

 Nota: si el sustituto es una función, la función realizará un procesamiento profundo, es decir, si el valor del par clave-valor también es una matriz, la función también se ejecutará

Principio JSON.stringify()

  • Convertir valor Si hay  toJSON() un método, este método define qué valor se serializará
  • No se garantiza que las propiedades de los objetos que no son de matriz aparezcan en un orden específico en la cadena serializada.
  • Los valores booleanos, los números y los objetos de envoltorio de cadena se convertirán automáticamente en los valores primitivos correspondientes durante la serialización, y las funciones indefinidas y arbitrarias y los valores de símbolo se ignorarán durante la serialización (que aparecen en los valores de propiedad de no -arreglo de objetos en) o convertido a nulo (cuando está presente en un arreglo). Cuando las funciones y undefined se convierten por separado, se devolverá undefined, como JSON.stringify(function(){}) o JSON.stringify(undefined)
  • Ejecutar este método en objetos que contienen referencias circulares (los objetos se refieren entre sí, formando un bucle infinito) generará un error
  • Todas las propiedades con un símbolo como clave de propiedad se ignorarán por completo, incluso si es obligatorio incluirlas en el parámetro de reemplazo.
  • Date llama a JSON() para convertirlo en una cadena de caracteres (igual que Date.toISOString()), por lo que se tratará como una cadena
  • Los valores de formato NaN e Infinity y nulo se tratarán como nulos
  • Otros tipos de objetos, incluidos Map/Set/WeakMap/WeakSet, solo serializan propiedades enumerables

Supongo que te gusta

Origin blog.csdn.net/m0_65335111/article/details/127227162
Recomendado
Clasificación