JSONをNodeアプリにPOSTしようとしています。これにより、GETを介してJSONが返されます。クライアント側では、モデルのJSON文字列を生成し、サーバーにPOSTします。
$.post(serverURL, ko.mapping.toJS(viewModel), function(data) {}, "json");
これにより、次のような文字列が生成されます。
{"switches":[{"id":1,"name":"Living Room","state":false},{"id":2,"name":"Dining Room","state":false},{"id":3,"name":"Kitchen Room","state":true},{"id":4,"name":"Aviary","state":true}]}
「状態」の値は引用符で囲まれていないtrue/falseであることに注意してください。これは、有効なJSONです。サーバーでリクエスト本文をログに記録すると、次のようになります。
{ switches:
[ { id: '1', name: 'Living Room', state: 'false' },
{ id: '2', name: 'Dining Room', state: 'false' },
{ id: '3', name: 'Kitchen Room', state: 'true' },
{ id: '4', name: 'Aviary', state: 'true' } ] }
違いに注意してください。
- 真/偽の値を引用しています
- 引用符で囲まれていないオブジェクト名があります
- 引用符は一重引用符です
私の目標は、後でGETリクエストを行うために、元のJSONオブジェクトを元の文字列形式で保存することです。このフォーマットは何をしているのですか、どうすればそれを防ぐことができますか?
リクエストごとの追加情報
私のNode.JSコードは次のとおりです。
var express = require('express');
var app = express();
var model;
app.configure( function () {});
app.use(express.bodyParser());
app.get('/', function (req,res) {
res.setHeader('Content-Type', 'application/json');
console.log(model);
res.send(model);
});
app.post('/', function (req,res) {
res.header("Access-Control-Allow-Methods", "POST");
res.setHeader('Content-Type', 'application/json');
model = req.body;
console.log(model);
});
app.listen(3000);