我有一个简单的 JSON 键 / 值列表,该列表通过 POST 发送回 ASP.NET。例子:
{ "key1": "value1", "key2": "value2"}
我不想将其反序列化为严格类型的. NET 对象
我只需要一个普通的旧Dictionary(Of String,String)或一些等效项(哈希表,Dictionary(Of String,Object),老式的 StringDictionary - 地狱,二维字符串数组对我来说就行。
我可以使用 ASP.NET 3.5 以及流行的 Json.NET(我已经在使用它序列化到客户端)中使用的任何东西。
显然,这两个 JSON 库都不具备这种明显的前额拍击功能,它们完全专注于通过强合同进行基于反射的反序列化。
有任何想法吗?
局限性:
Json.NET做到了...
string json = @"{""key1"":""value1"",""key2"":""value2""}";
var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
更多示例:使用 Json.NET 序列化集合
我确实发现. NET 通过System.Web.Extensions
程序集中的System.Web.Script.Serialization.JavaScriptSerializer
类型将 JSON 字符串转换为Dictionary<String, Object>
使用方法DeserializeObject(String)
。
在将内容类型为 application / json 的 ajax 发布(通过 jquery)发布到静态. net Page Method 时,我偶然发现了该方法(具有单个Object
类型的参数)神奇地接收了此 Dictionary。
对于那些在互联网上搜寻并绊脚石的人,我写了一篇有关如何使用 JavaScriptSerializer 类的博客文章。
了解更多... http://procbits.com/2011/04/21/quick-json-serializationdeserialization-in-c/
这是一个例子:
var json = "{\"id\":\"13\", \"value\": true}";
var jss = new JavaScriptSerializer();
var table = jss.Deserialize<dynamic>(json);
Console.WriteLine(table["id"]);
Console.WriteLine(table["value"]);