2012-04-20 7 views
0

ここではFacebook JS SDKに関するいくつかの問題が発生していますが、http://facebook.stackoverflow.com/questions/10243785/fb-ui-call-throws-json-parsing-error-serializing-then-deserializing-input-obですが、ここではもっと一般的なJSONの質問として考えています。JSON構文解析のためのリテラル値による参照と異なる変数でJS値を参照していますか?

JSON文字列に次のjavascript値をシリアル化する場合は、状況やパーサーを違う方法で扱うパーサーがありますか?私は特に、Bバージョンの文字列化に失敗するパーサがあれば興味があります。

var value = {"value":"one"}; 
var a = {"data1":{"value":"one"},"data2":{"value":"one"}}; 
var b = {"data1":value,"data2":value}; 
+0

JavaScriptパーサーがJSON文字列を作成するのはなぜですか?これは意味がありません。 JavaScriptパーサはあなたのコードを解析し、いくつかのオブジェクトが作成されます(作成されたコードの外観は気にしません)。オブジェクトはJSONとしてシリアル化できます。 –

+0

ページまたはサーバー間でコンテンツを渡す場合は、そのコンテンツをシリアル化する必要があります。 – Nathan

+0

私が言っていることを考えてみましょう。なぜオブジェクトを扱うJSONシリアライザは、それらのオブジェクトを作成したJavaScriptがどのように見えるかを気にするのですか? –

答えて

1

私の知る限り:最近のブラウザのデフォルトのJSONパーサーは「文字列化」B例正しいので、valueへの参照があまりにも文字列化されます。

console.log('a: '+JSON.stringify(a)); 
console.log('b: '+JSON.stringify(b)); 
/* all browsers I know (for IE restriction is IE>7) show 
a: {"data1":{"value":"one"},"data2":{"value":"one"}} 
b: {"data1":{"value":"one"},"data2":{"value":"one"}} 
*/ 
1

私の経験から、JSONパーサーはあなたの事例では失敗しません。あなたが持っていないようです

var object = {}; 
object.value = object; 


JSONパーサーの主な脅威は、次のような循環参照です。

関連する問題