将JSON反序列化为Object

时间:2011-11-07 17:06:48

标签: c# serialization deserialization

我正在将JSON字符串反序列化为对象。我不能使用Dictionary<string, string>,因为内部的JSON很复杂。我知道Dictionary<string, dynamic>,但我在.NET 3.5框架上,所以我不能使用dynamic

所以我最终到了这里:

object json = new JavaScriptSerializer().Deserialize<object>("myjson");

但我认为如果没有反思,就无法访​​问json。有什么提示吗?

3 个答案:

答案 0 :(得分:14)

我会使用ServiceStack.Text并使用JsonObject.Parse解析它。

然后你有一个易于阅读的数据字典。

ServiceStack比Json.NET 更快更好

答案 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)

JSON.NET是一个流行的JSON序列化库,它允许您序列化您键入的对象to / from JSON以及获取元结构的类型表示(通过{ {3}})当您不知道JSON的结构时。

我发现它比.NET多次提供JSON开箱即用的产品要好。