Cómo convertir un objeto JavaScript en una cadena json
La función eval convierte texto JSON en objetos
Para convertir texto JSON en objetos, puede utilizar la función eval. Dado que JSON es un subconjunto de JavaScript, el compilador analizará correctamente el texto y generará una estructura de objeto. El texto debe estar entre paréntesis para evitar ambigüedades en la sintaxis de JavaScript.
var obj = eval('(' JSONTest ')');
La función Eval es muy rápida. Puede compilar y ejecutar cualquier programa JavaScript, creando así problemas de seguridad. Utilice la función de evaluación solo cuando utilice código fuente confiable y confiable. Esto permite un análisis más seguro del texto JSON. Las aplicaciones web que utilizan XmlHttp son confiables porque solo se permite la comunicación entre páginas desde el mismo origen. Aunque no es perfecto. Si el servidor no tiene una codificación JSON estricta o no tiene una validación de entrada estricta, se puede transmitir texto JSON no válido, incluidos scripts peligrosos.
Analizador JSON JSON.parse, JSON.stringify
El uso de un analizador JSON puede evitar riesgos de seguridad, como la función eval para convertir texto JSON en un objeto. El analizador JSON solo reconoce texto JSON y rechaza todos los scripts. Los navegadores que brindan soporte JSON nativo tendrán analizadores JSON más rápidos que la función de evaluación.
Actualmente, Firefox, Opera e IE8 también ofrecen soporte JSON nativo. Las funciones proporcionadas por el intérprete JSON incluyen JSON.parse y JSON.stringify.
Para los navegadores que no proporcionan soporte JSON nativo, puede introducir el script json2.js para implementar la función de conversión JSON. El script json2.js se puede descargar desde la página /douglascrockford/JSON-js/blob/master/json2.js.
Función JSON.parse
Convierte texto JSON en objetos.
JSON.parse(text[,reviver])
Parámetros
texto
Obligatorio. Texto JSON que se convertirá en un objeto.
revivor
Opcional. Este parámetro es una función de reemplazo. Para cada nodo atravesado en la transformación, la función se ejecuta y el valor de retorno de la función reemplaza el valor del nodo correspondiente en el resultado de la transformación.
Función JSON.stringify
Convierte objetos a texto JSON.
JSON.stringify(valor[, sustituto[, espacio]])
Parámetros
texto
Obligatorio a convertir. Objeto de texto JSON.
revivor
Opcional. Este parámetro es una función de reemplazo. Para cada nodo atravesado en la transformación, la función se ejecuta y el valor de retorno de la función reemplaza el valor del nodo correspondiente en el resultado de la transformación.
Espacios
Opcional. El número de espacios utilizados para sangrar el texto JSON de salida formateado. Si no se proporciona este parámetro, la salida no se formateará.
Tipo de delegado del parámetro reviver
reviver(clave, valor)
Este es el nodo principal del nodo que se está atravesando actualmente en la función reviver. Cuando el nodo atravesado es el nodo raíz, el nodo principal es un objeto, el nodo raíz es un atributo del objeto y el nombre del atributo es una cadena vacía.
Parámetros
clave
Si el nodo principal es un objeto de matriz, la clave es el índice de la matriz; de lo contrario, la clave es el nombre del atributo del objeto.
valor
Valor del nodo.
Nota: JSON no admite estructuras de datos cíclicas.
Ejemplos de JSON.parse, JSON.stringify
[javascript] ver copia simple
lt;script type="text/javascript"gt;
función InventoryItem(parm) {
this.Product = parm.Product;
this.Quantity = parm.Quantity;
this.Price = parm.Price;
this.Type = parm.Type;
this.Type = parm.Type;
this.Type = parm.Type;
this.Type = parm.Type;
this.Type = parm.Type;
this.Date = parm.Date;
this.Item = parm.Item;
this.Type = parm.Type;
this.Total = function() {
var count = 0 ;
for (clave var en this.Item) {
count = this.Item[key].Total();
}
recuento de devoluciones;
}
}
var inventarioJSONText = "{\"Fecha\":\"2000-01-01\", \"Artículo\": [{\"Producto\": \"ProductOne\", \"Cantidad\": \"10\"
, \"Precio\": \"10\" ,\"Tipo\":\"Artículo de inventario\"}, {\"Producto\":\ProductTwo\", \"Cantidad\":\"100\", \"Precio\":\"20\"
,\"Type\":\"InventoryItem\"}],\"Type\":\"Inventory\"}";
// Convertir texto JSON en objeto, y cambie la instancia de la clase ordinaria a una instancia de la pseudoclase.
var inventarioObject = JSON.parse(inventoryJSONText, función(clave, valor) {
tipo var;
if (valor amp; amp; tipo de valor = == 'objeto') {
tipo = valor.Tipo;
if (tipo de tipo === 'cadena' amp; tipo de ventana[tipo] === 'función' ) {
devolver nuevo (ventana[tipo])(valor);
}
}
valor devuelto;
});
//Información de salida sobre el objeto convertido.
var salida = "Product\tQuantity\tPrice\tTotal\n";
for (clave var en inventarioObject.Item) {
var elemento = inventarioObject.Item[clave];