使用 JSON.NET 反序列化一些 JSON
-
11-09-2019 - |
题
我对 JSON 非常陌生,我需要解析 API 提供的一些内容。谷歌快速搜索出现了 JSON.NET, ,所以我现在尝试使用它将此 JSON 解析为列表对象。首先, JSON.NET 是最好用的库吗 为了这?
这就是我想做的:我有一个 名为 Item 的类, , 例如。json 有许多“元素”(如果这就是它们的名称),并且每个元素 包含3个字段:名为 id 的整数、名为 name 的字符串和名为creationTime 的日期时间。我想从 json 中解析所有这些 Item“元素” 进入 Item 对象列表. 。我在 Item 类中创建了 3 个字段来匹配 JSON。如何使用 JSON.NET 来完成此操作?
我试过了:
List<Item> fav = (List<Item>)new JsonSerializer().Deserialize(new JsonReader((TextReader)new StreamReader(response.GetResponseStream())));
但它似乎不起作用。我收到一个转换错误 - 它只是无法将其处理为列表附件,但我什至不确定它是否能够将 JSON 处理为一个 Item 类(JSON.NET 没有详细记录,但我'我明天将对其进行大量调试)。
您能给我一些示例代码来解释如何使用 JSON.NET 解析它吗?
谢谢!
更新: 顺便说一句,忘了提及 - 我的项目将针对 .NET Framework 2.0,因此我使用的是 JSON.NET 的旧版本:1.3.1.是否有任何巨大的优势可以使项目值得转换为 .NET 3.5,同时破坏最低的系统要求?
更新#2: 我决定在 System.Web.Extensions.dll 中使用 JavascriptSerializer 类而不是 JSON.NET,并且发布了一个关于该问题的问题 这里. 。谢谢!
解决方案
我建议您升级到 .net Framework 3.5 并使用 ASP.Net MVC 构建 json 服务。看:
其他提示
我意识到这个问题是约3岁,但我想我只想补充一点,如果你想建立一个基于JSON的API,NancyFx是真棒:的 http://nancyfx.org/
编辑: 一个例子的要求,真的很容易。要开始只是nancyfx ASP包添加到通过的NuGet一个Web项目。 (如果你将它添加到子路径上现有的应用程序,你需要一个位置添加到web.config文件,否则你是好去)
using Nancy;
using Nancy.ModelBinding;
public class Api : NancyModule
{
public Api()
{
Get["/api/order/create"] = x =>
{
var order = this.Bind<Order>(); //xml/json negotiated based on content header
var result = ... // Do stuff here
return Response.AsJson(result);
};
}
}