将JSON反序列化为Object

9 c# serialization deserialization

我正在将JSON字符串反序列化为对象.我不能使用a,Dictionary<string, string>因为里面的JSON很复杂.我知道Dictionary<string, dynamic>,但我已经完成了.NET 3.5框架,所以我无法使用dynamic.

所以我最终到了这里:

object json = new JavaScriptSerializer().Deserialize<object>("myjson");
Run Code Online (Sandbox Code Playgroud)

但我认为没有json反思就无法进入.有小费吗?

Pro*_*sta 13

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

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

ServiceStack 比Json.NET 更快更好.


myt*_*thz 10

这可以通过ServiceStack的JsonSerializer轻松完成:

var dictionary = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(myJson);
Run Code Online (Sandbox Code Playgroud)

如果使用Extension方法,它会更简洁:

var dictionary = myJson.FromJson<Dictionary<string,string>>();
Run Code Online (Sandbox Code Playgroud)

否则,如果您愿意,可以使用动态API:

var jsonObj = JsonObject.Parse(myJson);
var value = jsonObj.Get("key");
Run Code Online (Sandbox Code Playgroud)

以下是一些实际用法,显示了可以反序列化动态JSON有效负载的不同方法:

作为奖励,您将使用.NET最快的JSON序列化程序 :)

ServiceStack的Json Serializer也可以在NuGet上下载:

PM> Install-Package ServiceStack.Text
Run Code Online (Sandbox Code Playgroud)