Написать отформатированный JSON в Node.js - PullRequest
79 голосов
/ 17 апреля 2011

Я использую Node.js для отправки JSON в PostBin, но данные неправильно форматируются (как вы можете видеть здесь: http://www.postbin.org/1cpndqw).

Это код, который я использую для tesT:

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();

Ответы [ 4 ]

345 голосов
/ 30 июня 2012

Используйте JSON.stringify(object, null, 4), где 4 - количество пробелов, используемых в качестве единицы отступа.Вы также можете использовать "\t", если хотите вкладки.Это на самом деле часть спецификации ECMAScript 5 , и документировано в MDN .

10 голосов
/ 17 апреля 2011

Ну, в первую очередь потому, что JSON не волнует, как он отформатирован, а вы сами не форматируете.Вам нужен Javascript prettyprinter, если вам небезразлично, но первый вопрос: «Почему вы заботитесь?»

Вот код prettyprinting из рецептов Javascript.

На самом деле есть целая куча разных примеров здесь на SO.

ОБНОВЛЕНИЕ

Хорошо, так что теперь он делает то, что вы хотите, давайте спросимесли ты поступаешь правильноКак указали несколько человек, вам не нужно передавать эти дополнительные символы новой строки и табуляции или пробелы;стоимость эффективности невелика, вероятно, около 2-5 процентов, но вы никогда не знаете, когда вам может понадобиться пара процентов.

С другой стороны, я полностью согласен с тем, что гораздо удобнее читать вывод JSON в виде довольно напечатанного текста.Но есть и другое решение - вы, вероятно, по-прежнему используете браузер для просмотра этих результатов, поэтому вместо того, чтобы печатать его для передачи, используйте симпатичный принтер на стороне клиента.Я использую JSONView для Chrome и JSONView в Firefox.Многие отладчики также распечатывают результаты JSON для вас.

6 голосов
/ 29 марта 2017

Я использовал двухэтапный процесс, который мне помог:

var output = JSON.parse(insert_json_here);
var print_to_file = JSON.stringify(output, null, "\t")
2 голосов
/ 30 апреля 2012

Вы должны проверить underscore-cli - это инструмент командной строки для проверки и обработки данных JSON.

...