1. ホーム
  2. javascript

[解決済み] Node.jsでフォーマットされたJSONを書く

2023-06-29 15:51:07

質問

Node.jsを使ってPostBinにJSONをPOSTしているのですが、データのフォーマットが間違っています(この通りです。 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();

どのように解決するのですか?

JSONはどのようにフォーマットされるかを気にしないし、あなた自身がフォーマットすることもないからです。 必要なのは、気になるなら、javascript のプリティプリンターですが、最初の質問は "なぜ気になるのでしょう?" です。

ここに プリティプリンター のコードをJavascript Recipesから引用しています。

実際には、さまざまな例があります。 はこちら にあります。

アップデイト

さて、これで望んだことができるようになったので、正しいことをやっているかどうか聞いてみましょう。 何人かの人が指摘したように、余分な改行やタブ、スペースを送信する必要はありません。効率化のコストは小さく、おそらく 2 ~ 5% 近くですが、いつ数パーセント必要になるかわかりません。

一方、JSON 出力をかなり印刷されたテキストとして読むことができれば、より便利であることに完全に同意します。 おそらくこれらの結果を見るためにまだブラウザーを使用しているので、送信のために prettyprinting する代わりに、クライアントサイドの prettyprinter を使用します。 私が使っているのは JSONView for Chromeを使用しています。 JSONView を Firefox で実行します。 多くのデバッガーは、同様に JSON の結果を prettyprint してくれます。