Estoy usando Node.js para PUBLICAR JSON en PostBin, pero los datos están formateados incorrectamente (como puede ver aquí: http://www.postbin.org/1cpndqw ).
Este es el código que estoy usando para probar:
var http = require('http');
var options = {
host: 'www.postbin.org',
port: 80,
path: '/1cpndqw',
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.write(JSON.stringify({ a:1, b:2, c:3 }, null, 4));
req.end();
javascript
json
node.js
webhooks
Donald
fuente
fuente
{"a":1,"b":2,"c":3}
¿solucionaste tu problema? Parece que publicaste los datos correctamente.Respuestas:
Bueno, principalmente porque a JSON no le importa cómo está formateado, y tú mismo no estás formateando. Lo que necesitas es una prettyprinter javascript, si te importa, pero la primera pregunta es "¿Por qué te importa?"
Aquí hay un código bastante impreso de las recetas de Javascript.
En realidad, hay un montón de ejemplos diferentes aquí en SO.
ACTUALIZAR
Bien, ahora está haciendo lo que quieres, preguntémonos si estás haciendo lo correcto. Como han señalado varias personas, no es necesario transmitir esas nuevas líneas, pestañas o espacios adicionales; el costo de eficiencia es pequeño, probablemente en el vecindario del 2 al 5 por ciento, pero nunca se sabe cuándo podría necesitar un par por ciento.
Por otro lado, estoy completamente de acuerdo en que es mucho más conveniente poder leer la salida JSON como texto bastante impreso. Pero hay otra solución: probablemente todavía esté usando un navegador para ver estos resultados, por lo que en lugar de imprimirlos para transmitirlos, use una impresora bonita del lado del cliente. Utilizo JSONView para Chrome y JSONView en Firefox. Muchos depuradores también imprimirán bastante los resultados JSON por usted.
fuente
Utilice
JSON.stringify(object, null, 4)
donde4
es el número de espacios a utilizar como unidad de sangría. También puede utilizar"\t"
si desea pestañas. En realidad, esto es parte de la especificación ECMAScript 5 y está documentado en MDN .fuente
Usé un proceso de dos pasos que encontré que funcionaba:
var output = JSON.parse(insert_json_here); var print_to_file = JSON.stringify(output, null, "\t")
fuente
Debería consultar el subrayado-cli : es una herramienta de línea de comandos para inspeccionar y procesar datos JSON.
fuente