从 URL C# 读取时出现 JSON 解析错误

问题描述 投票:0回答:1

我正在尝试从 URL 读取 JSON 文件。 JSON 文件有一个标头和一些我需要的详细信息。不幸的是,这是我第一次这样做,所以我非常感谢您提供的任何指导。

我收到的错误是 JSON 解析错误。 网址:https://api.nobitex.ir/v2/trades/BTCUSDT

        public class Trade
        {
            public object time { get; set; }
            public string price { get; set; }
            public string volume { get; set; }
            public string type { get; set; }
        }

        public class Example
        {
            public string status { get; set; }
            public IList<Trade> trades { get; set; }
        }
/*******************************************************/
     string url = "https://api.nobitex.ir/v2/trades/BTCUSDT";

            using (var client = new HttpClient())
            {
                var response = await client.GetAsync(url);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    Console.WriteLine("err: " + response.StatusCode);
                    return;
                }

                string json = await response.Content.ReadAsStringAsync();

                var st = JsonConvert.DeserializeObject<List<Example>>(json); ;


                foreach (var t in st)
                {
             
                    Console.WriteLine("status: " + t.status);
                    Console.WriteLine("trade: " + t.trades);
                }


                var det = JsonConvert.DeserializeObject<List<Trade>>(json); ;

                foreach (var d in det)
                {
                    Console.WriteLine("status: " + d.volume);
                    Console.WriteLine("status: " + d.type);
                    Console.WriteLine("status: " + d.time);
                    Console.WriteLine("status: " + d.price);
                }
c# json newtons-method
1个回答
0
投票

您正在尝试反序列化为集合

JsonConvert.DeserializeObject<List<Example>>(json);

但是您链接的 JSON 不是数组,而是一个对象:

{"status":"ok","trades":[{"time":1709824308663,"price":"66699.9","volume":"0.009622","type":"buy"},{"time":1709824290203,"price":"66458","volume":"0.000131","type":"sell"},{"time":1709824288176,"price":"66458","volume":"0.000617","type":"sell"},{"time":1709824288176,"price":"66460","volume":"0.000935","type":"sell"},{"time":1709824288176,"price":"66460.01","volume":"0.000001","type":"sell"},{"time":1709824288176,"price":"66460.01","volume":"0.000439","type":"sell"},{"time":1709824206312,"price":"66456.01","volume":"0.003139","type":"sell"},{"time":1709824199600,"price":"66748.97","volume":"0.001498","type":"buy"},{"time":1709824174337,"price":"66750","volume":"0.020422","type":"buy"},{"time":1709824174337,"price":"66700","volume":"0.001","type":"buy"},{"time":1709824165632,"price":"66456","volume":"0.000816","type":"sell"},{"time":1709824165632,"price":"66503","volume":"0.000133","type":"sell"},{"time":1709824165632,"price":"66551","volume":"0.0003","type":"sell"},{"time":1709824165632,"price":"66561.01","volume":"0.00044","type":"sell"},{"time":1709824165632,"price":"66600","volume":"0.000658","type":"sell"},{"time":1709824165632,"price":"66750","volume":"0.00837","type":"sell"},{"time":1709824152591,"price":"66750","volume":"0.019845","type":"sell"},{"time":1709824152591,"price":"66750","volume":"0.011308","type":"sell"},{"time":1709824152591,"price":"66765","volume":"0.000229","type":"sell"},{"time":1709824152591,"price":"66765","volume":"0.000403","type":"buy"}]}

这似乎是

Example
的单个实例,因此将其反序列化为该一个实例:

JsonConvert.DeserializeObject<Example>(json);
© www.soinside.com 2019 - 2024. All rights reserved.