Explicación detallada de ejemplos de métodos JSON de conversión y análisis de JavaScript

Explicación detallada de ejemplos de métodos JSON de conversión y análisis de JavaScript

JavaScript convierte y analiza JSON

En general, hay dos formas de analizar cadenas JSON en formato de datos JSON en JavaScript:

Una es usar la función eval() .

Utilice el objeto Function para el análisis de retorno.

Use la función eval para analizar, cada método de jquery para atravesar

El método de análisis de datos JSON con JQuery, como el objeto de transmisión de la solicitud asincrónica de JQuery, el resultado devuelto después de la solicitud de JQuery es un objeto json, la forma de la cadena devuelta por el servidor en formato JSON se considera aquí, para el objeto JSON encapsulado por complementos como JSONObject , que es similar a este y no se explicará aquí.


Aquí, el conjunto de cadenas JSON se proporciona primero y el conjunto de cadenas es el siguiente:

var data="{
root:
[
    {name:'1',value:'0'},
    {name:'6101',value:'北京市'},
    {name:'6102',value:'天津市'},
    {name:'6103',value:'上海市'},
    {name:'6104',value:'重庆市'},
]
}";

Sobre la base de los tipos de datos adquiridos de forma asíncrona por JQuery - objetos json y cadenas, se presentan los métodos de procesamiento de los resultados obtenidos por los dos métodos, respectivamente.


el primer método:

evaluar()

Para la cadena JSON devuelta por el servidor, si la solicitud asíncrona de jquery no especifica el tipo, o lo acepta como una cadena, entonces debe objetivarse. El método no es demasiado problemático, simplemente coloque la cadena en eval() y ejecutarlo una vez. Este método también es adecuado para obtener objetos json en la forma ordinaria de javascipt, los siguientes ejemplos ilustran:

// 转换为json对象
var dataObj=eval("("+data+")");

¿Por qué quieres agregar ("("+data+")"); aquí?

La razón es: el problema de eval en sí mismo. Dado que json comienza y termina con "{}", en JS, se tratará como un bloque de declaraciones, por lo que debe convertirse en una expresión a la fuerza.

El propósito de agregar paréntesis es obligar a la función eval a convertir la expresión dentro de los corchetes en un objeto al procesar el código JavaScript, en lugar de ejecutarlo como una declaración. Para dar un ejemplo, como el objeto literal {}, si no se agregan los corchetes exteriores, entonces eval reconocerá los corchetes como los marcadores de inicio y final del bloque de código JavaScript, luego se considerará que {} ejecuta un vacío declaración. Así que los siguientes dos resultados de ejecución son diferentes:

// return undefined

alert(eval("{}");

// return object[Object]

alert(eval("({})");

Por esta forma de escribir, en JS, se puede ver en todos lados. Tales como: (función()) {}(); al realizar operaciones de cierre, etc.

//输出root的子对象数量

alert(dataObj.root.length);

$.each(dataObj.root,fucntion(idx,item){

    if(idx==0){

        return true;

    }

    //输出每个root子对象的名称和值

    alert("name:"+item.name+",value:"+item.value);

})

Para que js general genere objetos json, solo necesita reemplazar el método $.each() con una declaración for, y el otro permanece sin cambios, la cadena JSON devuelta por el servidor.

Para la cadena JSON devuelta por el servidor, si la solicitud asíncrona de jquery establece el tipo (generalmente esta propiedad de configuración) en "json", o usa el método $.getJSON() para obtener la devolución del servidor, entonces no se requiere eval()

método, debido a que el resultado obtenido en este momento ya es un objeto json, solo necesita llamar al objeto directamente.Aquí, el método $.getJSON se usa como ejemplo para ilustrar el método de procesamiento de datos:

$.getJSON("http://www.phpzixue.cn/",{param:"gaoyusi"},function(data){

    //此处返回的data已经是json对象

    //以下其他操作同第一种情况

    $.each(data.root,function(idx,item){

        if(idx==0){

            //同countinue,返回false同break

            return true;

        }

        alert("name:"+item.name+",value:"+item.value);

    });

});

Lo que necesita atención especial aquí es que el método eval() en el método 1 ejecuta dinámicamente la cadena (tal vez un script js), lo que puede causar fácilmente problemas de seguridad en el sistema. Por lo tanto, se pueden usar algunas bibliotecas de secuencias de comandos del lado del cliente de terceros que evitan eval () Por ejemplo, JSON en JavaScript proporciona una biblioteca de secuencias de comandos de no más de 3k.


El segundo método: 

El método de análisis es usar el objeto Función para completar, y su aplicación típica es el análisis de los datos devueltos, como el éxito bajo el método AJAX en JQuery.

var json='{"name":"CJ","age":18}';
data =(new Function("","return "+json))();

Los datos en este momento se analizarán en un objeto json.

Supongo que te gusta

Origin blog.csdn.net/cdming/article/details/130179265
Recomendado
Clasificación