Напишите форматированный JSON в Node.js

Я использую Node.js для POST 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();

Ответ 1

Ну, в первую очередь потому, что JSON не волнует, как он отформатирован, и вы сами не делаете никакого форматирования. Что вам нужно - это jprcript-шаблон, если вам все равно, но первый вопрос: "Почему вас это волнует?"

Здесь prettyprinting код из рецептов Javascript.

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

ОБНОВЛЕНИЕ

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

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

Ответ 3

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

var output = JSON.parse(insert_json_here);
var print_to_file = JSON.stringify(output, null, "\t")

Ответ 4

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