我有一个简单的JSON键/值列表,通过POST发送回ASP.NET。例子:
{ "key1": "value1", "key2": "value2"}
我没有试图反序列化为强类型的.NET对象
我只需要一个普通的旧字典(Of String,String),或者一些等价的东西(哈希表,字典(OfString,Object),老式的StringDictionary——见鬼,一个二维字符串数组对我来说很有用。
我可以使用ASP.NET 3.5中可用的任何东西,也可以使用流行的Json.NET(我已经在使用它对客户端进行序列化)。
显然,这两个JSON库都没有这种开箱即用的能力——它们完全专注于通过强契约实现基于反射的反序列化。
有什么想法吗?
限制:
我不想实现我自己的JSON解析器尚无法使用ASP.NET 4.0希望远离旧的、不推荐使用的JSON ASP.NET类
System.Text.Json
这现在可以使用.NET Core 3.0内置的System.Text.Json来完成。现在可以在不使用第三方库的情况下反序列化JSON。
var json = @"{""key1"":""value1"",""key2"":""value2""}";
var values = JsonSerializer.Deserialize<Dictionary<string, string>>(json);
如果使用.NET标准或.NET Framework,也可以在NuGet包System.Text.Json中获得。
确保阅读并理解:
https://github.com/dotnet/runtime/issues/30452
我只需要解析一个嵌套的字典
{
"x": {
"a": 1,
"b": 2,
"c": 3
}
}
其中JsonConvert.DeserializeObject没有帮助。我发现了以下方法:
var dict = JObject.Parse(json).SelectToken("x").ToObject<Dictionary<string, int>>();
SelectToken允许您深入到所需的字段。您甚至可以指定一个类似“x.y.z”的路径,以进一步深入JSON对象。