3

我对 JSON 很陌生,我需要解析一些 API 提供的内容。一个快速的谷歌搜索出现了JSON.NET,所以我现在尝试使用它来将此 JSON 解析为一个列表对象。首先,JSON.NET 是最好的库吗?

这就是我想要做的:例如,我有一个名为 Item 的类。json 有许多“元素”(如果它们被称为),每个包含 3 个字段:一个名为 id 的整数、一个名为 name 的字符串和一个名为 creationTime 的日期时间。我想将 json 中的所有这些 Item “元素”解析为 Item objects 列表。我在 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,关于此的问题发布在这里。谢谢!

4

2 回答 2

1

我意识到这个问题大约有 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); 
                };
            }       
        }
于 2012-06-26T12:55:02.160 回答
0

我建议您升级到 .net framework 3.5 并使用 ASP.Net MVC 来构建您的 json 服务。看:

http://msmvps.com/blogs/omar/archive/2008/10/03/create-rest-api-using-asp-net-mvc-that-speaks-both-json-and-plain-xml.aspx

于 2009-09-20T21:10:33.877 回答