出力がまったく規則的(予測可能) で.replace()
ある場合は、おそらく最も単純です。
var escapeSequences = xx.responseText.replace(/^\{a:/, '').replace(/\}$/, '');
console.log(escapeSequences === "\"\\x48\\x65\\x6C\\x6C\\x6F\""); // true
または、値は等しいが他の点では同じではない可能性がある文字列リテラルで十分な場合は、解析 (以下を参照) してからstringify()
個々のプロパティを解析できます。
console.log(JSON.stringify(data.a) === "\"Hello\""); // true
それ以外の場合は、レクサーresponseText
を実行してトークン化し、そこからリテラルを取得する必要があります。JavaScript には、解析/評価とは別のオプションが含まれていないため、このためのライブラリを見つける必要があります。
「JavaScript で書かれた Lexer?」 は、その出発点として適しているかもしれません。
それを解析するには:
コードの文字列のように見えるので、おそらくeval()
.
var data = eval('(' + xx.responseText + ')');
console.log(data.a); // Hello
注: 括弧 make sureは、ブロックではなくリテラル{...}
として評価されます。Object
また、このようなデータ通信用のコードに代わるものを検討することをお勧めします。
一般的なオプションは ですJSON
。これは JavaScript の構文を使用しますが、かなり厳密なサブセットを使用します。function
s やその他の潜在的に問題のあるコードを含めることはできません。
var data = JSON.parse(xx.responseText);
console.log(data.a); // Hello
JSON.orgにアクセスすると、JSON を出力するためのサーバー側言語を選択するための参照またはライブラリを見つけることができるはずです。
{ "a": "Hello" }