2012-05-11 5 views
4

基本的に、そのプロパティ/キーの1つに空の文字列を含むJavaScriptオブジェクト(結合配列)であるJSON文字列が、組み込みの.NETシリアライザで例外をスローすることがわかりました。これは.NETのJavaScriptがデシリアライズするバグのようです...それは?

たとえば、このコード:

string json = "{ \"\" : [\"b\"] }"; 

JavaScriptSerializer js = new JavaScriptSerializer(); 

var map = js.Deserialize<Dictionary<string, List<string>>>(json); 

は多分正しいJSONは、プロパティ名の空の文字列を許可していないことを示唆し、ArgumentExceptionがスローされます。 Backaus Naur Form Diagram/Syntax DiagramCrockford’sサイトを見るだけで、空の文字列が許可されていることがわかります。

object => '{' string ':' value '}' 
string => "" 
     => " chars " 
+0

私はコードをJSON.NETに数週間前に切り替えて、それがはるかに優れていることを発見しました。 –

答えて

4

イエップ。確かに私のバグのように見える。これは間違いなく有効です。

var x = {"" : ["b"]} 
alert(x[""]); 

私はあなたがこれを行う必要があります言っていないんだけど、あなたは JSでそれを行うことができます。

編集と言われています。あなたのコードは私のために働く。どのバージョンの.NETを使用していますか?

を確認してください。それは.NET 3.5で壊れますが、4.0で動作します。

+0

私はv3.5を使用しています...あなたは4.0/4.5を使用していますか? – lucidquiet

+0

はい。私の更新を見てください。 – aquinas

関連する問題