我是 JSON 的新手,我需要解析 API 提供的一些内容。一个快速的谷歌搜索出现了JSON.NET ,所以我现在尝试使用它来将此 JSON 解析为列表对象。首先,JSON.NET 是最好的库吗?
这就是我想要做的:例如,我有一个名为 Item 的类。 json 有许多“元素”(如果这就是它们的名称),每个元素包含 3 个字段:一个名为 id 的整数、一个名为 name 的字符串和一个名为 creationTime 的日期时间。我想将 json 中的所有这些项目“元素”解析为项目对象列表。我在 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,关于这个的问题已发布 here .谢谢!
最佳答案
我意识到这个问题已有 3 年历史,但我想我只是想补充一点,如果您想构建一个基于 JSON 的 Api,NancyFx 很棒:http://nancyfx.org/
编辑: 请求的示例,真的很简单。要开始使用,只需通过 NuGet 将 nancyfx asp 包添加到 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);
};
}
}
关于c# - 使用 JSON.NET 反序列化一些 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448184/