当您没有类型时,如何在 .NET 中反序列化 JSON 字符串
Posted
技术标签:
【中文标题】当您没有类型时,如何在 .NET 中反序列化 JSON 字符串【英文标题】:How to deserialize a JSON string in .NET, when you don't have a type for it 【发布时间】:2012-01-03 19:39:23 【问题描述】:检查此网址:
http://api.***.com/1.1/users/811785/questions?sort=votes
这是来自 StackOveflow 的 API 的 URL。返回的 JSON 真的很复杂,我想把它转换成一个对象,这样我就可以在我的 ASP.NET MVC 的视图中使用它。
问题在于,javascriptSerializer
对象的Deserialize
方法将Type
参数作为其第二个参数。但是返回的 JSON 太复杂了,我不想创建一个强类型的对象来反序列化它。
我该怎么办?
【问题讨论】:
【参考方案1】:在 .NET 4.0 中,您可以使用动态
这里有更多
http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/22/using-c-4.0-and-dynamic-to-parse-json.aspx
这里还有更多
http://dynamicjson.codeplex.com/
【讨论】:
【参考方案2】:使用Json.NET 你可以做这样的事情
JObject o = JObject.Parse(json);
string name = (string)o["Name"];
【讨论】:
【参考方案3】:您不需要像 JSON.NET 这样的额外库,只需使用 JavaScriptSerializer。
您可以考虑JavaScriptSerializer.DeserializeObject
,它将返回一个Object
,它基本上是一个Dictionary<string, object>
。
您必须继续强制转换才能获得嵌套值。
在你的Quick Watch中查看反序列化的对象,然后你就会知道你需要什么来转换你返回的Dictionary<>
【讨论】:
【参考方案4】:试试@987654321@
,它有很多Deserialize
重载方法,试试看,你一定会得到你想要的。
【讨论】:
以上是关于当您没有类型时,如何在 .NET 中反序列化 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试在 .NET Core 中反序列化 FormFile 对象时,为啥会出现奇怪的异常?