4

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

たとえば、このコード:

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

JavaScriptSerializer js = new JavaScriptSerializer();

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

ArgumentException をスローし、適切な JSON ではプロパティ名に空の文字列が許可されていない可能性があることを示唆します。Crockford のサイトにあるBackaus Naur Form Diagram / Syntax Diagramをちらりと見ただけで、空の文字列が許可されていることがわかります。

object => '{'  string ':' value '}'
string => ""
       => " chars "
4

1 に答える 1

4

うん。それは確かに私にはバグのように見えます。これは間違いなく有効です:

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

これを行うべきだと言っているわけではありませんが、JS で行うことができます。

編集そうは言っても。あなたのコードは私のために働きます。使用している .NET のバージョンは何ですか?

編集確定。.NET 3.5 では機能しませんが、4.0 では動作します。

于 2012-05-11T20:40:56.187 に答える