En lugar de pasar de una cadena json y usar $ .parseJSON, necesito tomar mi objeto y almacenarlo en una variable como una cadena que representa a json.
(Una biblioteca con la que estoy tratando espera un tipo json con formato incorrecto, por lo que necesito jugar con él para que funcione).
¿Cuál es la mejor manera de hacer esto?
javascript
jquery
json
Incógnito
fuente
fuente
Respuestas:
Editar: debe usar la biblioteca json2.js de Douglas Crockford en lugar de implementar el código a continuación. Proporciona algunas funciones adicionales y compatibilidad con navegadores mejores o más antiguos.
Coge el archivo json2.js de: https://github.com/douglascrockford/JSON-js
// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } }; var tmp = {one: 1, two: "2"}; JSON.stringify(tmp); // '{"one":1,"two":"2"}'
Código de: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/
fuente
undefined
, funciones (que no son valores JSON válidos), objetos booleanos (por ejemplonew Boolean(true);
), oNaN
que deberían ser reemplazados withnull
, etc ... tampoco admite los argumentos opcionales adicionales, lareplacer
función y elspaces
número de sangría, que se describen completamente en el estándar.JSON.stringify({})
ver si lo obtiene"{}"
sin necesidad de incluir el código anterior. Incluso puede pasar parámetros para filtrar claves o para hacer impresiones bonitas, por ejemplo,JSON.stringify({a:1,b:2}, null, 2)
poner una nueva línea y 2 espacios delante de cada tecla.yo suelo
que me da la cuerda.
fuente
La mayoría de los navegadores tienen un
JSON
objeto nativo en estos días, que incluyeparse
ystringify
métodos. Así que trata deJSON.stringify({})
ver si lo consigues"{}"
. Incluso puede pasar parámetros para filtrar claves o para hacer impresiones bonitas, por ejemplo,JSON.stringify({a:1,b:2}, null, 2)
poner una nueva línea y 2 espacios delante de cada tecla.JSON.stringify({a:1,b:2}, null, 2)
da
"{\n \"a\": 1,\n \"b\": 2\n}"
que se imprime como
{ "a": 1, "b": 2 }
En cuanto a la parte desordenada de su pregunta, use el segundo parámetro. De http://www.javascriptkit.com/jsref/json.shtml :
fuente
La mejor forma que he encontrado es usar jQuery JSON
fuente
Puede analizar el JSON en un objeto y luego crear su JSON con formato incorrecto a partir del objeto ajavscript. Sin embargo, este puede no ser el mejor en cuanto a rendimiento.
De lo contrario, si solo necesita hacer cambios muy pequeños en la cadena, simplemente trátela como una cadena y muévala usando javascript estándar.
fuente