c# - 使用 JSON.NET 反序列化一些 JSON

标签 c# .net json serialization json.net

我是 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/

相关文章:

c# - 创建并签署证书

c# - Linq 到实体 : adding a where condition to a child relationship

c# - ModalPopupExtender 未从页面加载后的代码中显示

c# - 在 WPF 中加载多个图像时防止内存膨胀

mysql - .NET将数据从SQL Server插入MySQL而不循环数据

sql - 在 SQL Server 2012 中使用 JSON

java - 如何在spring mvc Controller 中读取具有多个数组的json?

c# - MDI WinForm 应用程序的奇怪任务栏行为

.net - KeyedCollection 是否有一般的具体实现?

javascript - 从关联数组创建 JSON 字符串。 JavaScript