6

NameValueCollectionできればサードパーティのパーサーを使用せずに、JSON の文字列を C# に簡単に変換するにはどうすればよいでしょうか?

4

3 に答える 3

10

JSON の逆シリアル化にまだ JSON.NET を推奨している理由がよくわかりません。JSON を C# に逆シリアル化する方法に関するブログ投稿を書きました。

要するに、次のようになります。

using System.Web.Script.Serialization;

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, string>>(jsonText);

NameValueCollection nvc = null;
if (dict != null) {
  nvc = new NameValueCollection(dict.Count);
  foreach (var k in dict) {
    nvc.Add(k.Key, k.Value);
  }
}
                    }
var json = jss.Serialize(dict);
Console.WriteLine(json);

System.Web.Extensions.dll への参照を必ず追加してください。

注: 通常は にデシリアライズするdynamicので、それでNameValueCollectionうまくいくと思います。ただし、実際にそうであるかどうかは確認していません。

于 2012-07-09T16:18:02.497 に答える
4

編集

サードパーティ開発のない純粋な.netソリューションは次のようになります:JavaScriptSerializer –JSONシリアル化および逆シリアル化への辞書


Json.NETを利用する

string jsonstring = @"{""keyabc"":""valueabc"",""keyxyz"":""valuexyz""}";

Dictionary<string, string> values = 
   JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonstring);

@jonの回答が同じことを示唆していることを確認してください:NewtonsoftJSONライブラリを使用した.NetLinq to JSON

于 2012-07-09T16:08:50.240 に答える