c# - 在 C# 中使用索引数组反序列化 JSON

标签 c# asp.net-mvc json deserialization

我是使用 JSON 的新手,正在处理来自 API 的返回,我无法更改其格式。返回示例是:(实际 url 已被删除)

{
"body":
    {
    "link":
        {"linkurl": ["www.google.com"]}
    },
"error": null,
"message": "Data Retrieved successfully",
"status": true
}

我在 VS2010 中使用带有 MVC 3 的 Newtonsoft.Json 库。

我的类(class)是:

[JsonObject(MemberSerialization.OptIn)]
    public class LinksJSON
    {
        [JsonProperty]
        public string link{ get; set; }

        [JsonProperty]
        public string message { get; set; }

        [JsonProperty]
        public string error { get; set; }

        [JsonProperty]
        public bool status { get; set; }
    }

我反序列化它:

private static T _download_serialized_json_data<T>(string url) where T : new()
    {
        using (var w = new WebClient())
        {
            var json_data = string.Empty;
            // attempt to download JSON data as a string
            try
            {
                json_data = w.DownloadString(url);
            }
            catch (Exception) { }
            // if string with JSON data is not empty, deserialize it to class and return its instance 
            return !string.IsNullOrEmpty(json_data) ? JsonConvert.DeserializeObject<T>(json_data) : new T();
        }
    }

    public string CheckJSONLink()
    {

        var url = "<api url-removed for security>";

        var outObj = _download_serialized_json_data<LinksJSON>(url);



        return outObj.Link;
    }

不过,我正在尝试获取 linkurl 的值,它是 Link 中的索引数组。

我将如何访问这些信息?

最佳答案

你没有设置你的类来匹配 JSON,你的类说 link 是一个简单的字符串,你的例子显示它是一个复杂的类型。

为了按照您的预期正确反序列化它,您必须修改您的类以匹配 JSON。具体来说,link 应该是一个类的实例。

关于c# - 在 C# 中使用索引数组反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729820/

相关文章:

asp.net-mvc - ASP.NET MVC 和 Ajax,并发请求?

asp.net-mvc - ASP.NET MVC4 路由 - 到同一位置的多个路由

java - Jersey ,如何发布 JSON 对象列表?

c# - 从 C# 确定 SQL Server 数据库列的默认值

c# - 我什么时候不应该实现 IDisposable?

c# - Windows 应用商店应用 session

c# - 从 IIS APP POOL 访问 SQL Server Filetable

c# - 如何将属性(获取;设置;)分配给 WPF 用户控件?

xml - 为 json 和 xml 的 Restful 端点设置 Spring MVC

C# 网络 API 调用