【问题标题】:use json object in c#在 C# 中使用 json 对象
【发布时间】:2010-10-03 07:24:07
【问题描述】:

http://xurrency.com/api 这个网络服务正在返回一个 json 响应消息。如何在我的 .net 项目(asp.net Web 应用程序)中将此消息用作对象

【问题讨论】:

    标签: c# .net asp.net ajax json


    【解决方案1】:

    您可以从定义将处理响应的模型类开始:

    public class XurrencyResponse
    {
        public string Status { get; set; }
        public string Code { get; set; }
        public string Message { get; set; }
        public Result Result { get; set; }
    }
    
    public class Result
    {
        public decimal Value { get; set; }
        public string Target { get; set; }
        public string Base { get; set; }
        public DateTime Updated_At { get; set; }
    }
    

    拥有它们后,您只需调用服务即可:

    class Program
    {
        static void Main()
        {
            var serializer = new JavaScriptSerializer();
            string json = null;
            using (var client = new WebClient())
            {
                json = client.DownloadString("http://xurrency.com/api/eur/gbp/1.5");
            }
            var response = serializer.Deserialize<XurrencyResponse>(json);
            Console.WriteLine(response.Status);
        }
    }
    

    【讨论】:

      【解决方案2】:

      您需要将JSON数据deserialize转换成一个对象才能使用它。

      【讨论】:

        【解决方案3】:

        如果您引用System.Web.Extensions.dll 并将using System.Web.Script.Serialization; 指令添加到必要代码文件的顶部,那么您应该可以访问JavaScriptSerializer - 然后您只需创建一个看起来像 JSON 的类和调用`反序列化,即为

        {"result":{"updated_at":"2010-10-02T02:06:00Z", "value":1.3014,"target":"gbp","base":"eur"}, "code":0, "status":"ok"}
        

        你可能有:

        public class XurrencyResponse {
            public class Result {
                public string updated_at {get;set;}
                public decimal value {get;set;}
                public string target {get;set;}
                public string base {get;set;}
            }
            public Result result {get;set;}
            public int code {get;set;}
            public string status {get;set;}
        }
        

        然后调用serializer.Deserialize&lt;XurrencyResponse&gt;,其中serializerJavaScriptSerializer 实例。

        【讨论】:

        • XurrencyResponse,大声笑,你在读我的心。相同的命名约定。我喜欢这样:-)
        • @Darin - 我不知道为什么,但我更喜欢 JSON DTO 的嵌套类型。我最初将它命名为“...Result”,但是在这种情况下它与内部Result 有歧义
        【解决方案4】:

        另一种选择是使用Json.NET

        我在解析 Json 数据时一直在使用它,并且对这个库非常满意,因为如果您正在解析简单的输出,则不需要对显式类进行建模来保存数据,并且如果您使用它,它会为您提供高级功能需要解析更复杂的输出。

        在您做出选择之前,请查看此库:)

        【讨论】:

          猜你喜欢
          • 2016-12-30
          • 1970-01-01
          • 1970-01-01
          • 2021-10-15
          • 2023-03-30
          • 1970-01-01
          • 2021-12-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多