我正在将JSON字符串反序列化为对象。我不能使用Dictionary<string, string>
,因为内部的JSON很复杂。我知道Dictionary<string, dynamic>
,但我在.NET 3.5框架上,所以我不能使用dynamic
。
所以我最终到了这里:
object json = new JavaScriptSerializer().Deserialize<object>("myjson");
但我认为如果没有反思,就无法访问json
。有什么提示吗?
答案 0 :(得分:14)
答案 1 :(得分:11)
这可以通过ServiceStack's JsonSerializer轻松完成:
var dictionary = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(myJson);
如果使用Extension方法,它会更简洁:
var dictionary = myJson.FromJson<Dictionary<string,string>>();
否则,如果您愿意,可以使用动态API:
var jsonObj = JsonObject.Parse(myJson);
var value = jsonObj.Get("key");
以下是一些现实世界的用法,展示了您可以对动态JSON有效负载进行反序列化的不同方法:
作为奖励,您将使用.NET's fastest JSON serializer:)
ServiceStack的Json Serializer也可以在NuGet上下载:
PM> Install-Package ServiceStack.Text
答案 2 :(得分:1)