他の場所で発生している問題を示すために、簡単な node.js プログラムを作成しました。
次の node.js プログラムがあるとします。
var http = require('http');
http.createServer(function (req, res) {
// simple repro for json deserializaiton error cause by right quote character '’'
var json = { 'foo': 'bar’s answer' };
var write = JSON.stringify(json);
res.writeHead(200, { 'Content-Type': 'application/json', 'Content-Length': write.length });
res.end(write);
}).listen(8085, '127.0.0.1');
Chrome の Advanced Rest Client を使用してこれに POST すると、200 OK 応答が返されますが、応答のコンテンツの JSON タブに、解析された json の代わりに「予期しない入力の終わり」という用語が表示されます。
raw タブでは、"{"foo":"bar's answer" という文字列が表示され、json を解析できなかった理由が明らかになります (最後の '}' がありません)。
元のオブジェクトから ''' を削除すると、応答が戻ったときに問題なく解析されます。
単純な ''' が json の解析に失敗する理由は何ですか? 私のテストでは、他のさまざまなキャラクターで同じ問題に遭遇しました。