【问题标题】:Cannot deserialize the JSON array (e.g. [1,2,3]) into type ' ' because type requires JSON object (e.g. {“name”:“value”}) to deserialize correctly无法将 JSON 数组(例如 [1,2,3])反序列化为类型“”,因为类型需要 JSON 对象(例如 {“name”:“value”})才能正确反序列化
【发布时间】:2021-05-15 22:07:39
【问题描述】:

您好,我正在尝试从 api 下载数据,然后在其上尝试一些 linq,但我什至无法正常显示它。 动态类型可以正常工作,但我不能使用 linq

我正在使用这个 api http://api.nbp.pl/api/exchangerates/tables/a/?format=json

我的 C# 课程

        public class Rootobject
        {
            public Class1[] Property1 { get; set; }
        }

        public class Class1
        {
            public string table { get; set; }
            public string no { get; set; }
            public string effectiveDate { get; set; }
            public Rate[] rates { get; set; }
        }

        public class Rate
        {
            public string currency { get; set; }
            public string code { get; set; }
            public float mid { get; set; }
        }

    

要反序列化的代码:

 using (WebClient client = new WebClient())
            {
                String text = Encoding.UTF8.GetString(client.DownloadData("http://api.nbp.pl/api/exchangerates/tables/a/?format=json"));
                var Data = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(text);

                Debug.WriteLine(Data);

            }

当我把它放在数组或列表中时(像这样)

var Data = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject[]>(text);

我只能看到类路径

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    要正确表示提供的链接返回的 json,您可以使用 Class1 数组,而不是 Rootobject

    var Data = Newtonsoft.Json.JsonConvert.DeserializeObject<Class1[]>(text);
    

    【讨论】:

    • 它只显示 project.Class1[] 我如何显示所有表格?
    • 例如,@Sheep 查看this(或this)以及可选的override ToString。或者只是将其序列化并打印到控制台)
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多