0

私が使用したすべてのJSONシリアル化ユーティリティまたはライブラリは壊れているようで、これについて論理的な説明を得ることができません。

説明させてください。おそらく他の言語の.NET用のJSONライブラリ用にFirebugで次のコードを実行します。

実行するときにFirefoxにチェックインするだけです。

var obj1 = "test";
var obj1serialization = JSON.stringify(obj1);

出力は""test""です。しかし、これは無効なJSONオブジェクトです!そのため、シリアル化されたJSONからオブジェクトを再作成しようとすると失敗し、JSON文字列が正しくないことが示されました。

var obj2 = JSON.parse(obj1serialization);

文字列はオブジェクトです。しかし、JSONでのシリアル化は機能しません。この状況の論理的な説明はありますか?

4

1 に答える 1

3

JSON では(いくつかのプログラミング言語とは異なり)、文字列はオブジェクトではなく、プリミティブ (数値やブール値など) です。シリアライザーに JSONフラグメントを作成するように依頼しています。有効な JSON ドキュメントの最上位アイテムは、常にオブジェクトまたは配列です。これらのいずれかを にフィードJSON.stringifyすると、有効で完全な JSON ドキュメントが生成されます。

ほとんどの JSON シリアライザーがフラグメントを許可するという事実は、非常に便利です。オブジェクトや配列ではないものを渡した場合、例外をスローするしかありません。

JSON.parseはより制限的であり、提供する JSON ドキュメントが完全で整形式である必要があります。すべての JSON 解析ルーチンがそのように制限されているわけではありませんが、それはそうです。

于 2012-11-02T14:58:18.147 に答える