C#读取URL中JSON文件时出现解析错误,寻求技术指导
Nobitex API JSON解析错误修正方案
尝试从https://api.nobitex.ir/v2/trades/BTCUSDT读取交易数据JSON时遇到解析错误,原代码存在反序列化目标类型不匹配的问题,以下是修正方案:
错误原因分析
- API返回的JSON根结构是单个对象(包含
status和trades数组),但原代码错误地尝试反序列化为List<Example>和List<Trade>,导致解析失败 Trade类的time字段定义为object,而API返回的是时间戳数字,类型匹配度差
修正后的代码
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; public class Trade { // API返回的是毫秒级时间戳数字,用long更适配,可额外转换为DateTime public long time { get; set; } public string price { get; set; } public string volume { get; set; } public string type { get; set; } // 可选:新增时间戳转本地DateTime的属性,方便直接使用 public DateTime TradeTime => DateTimeOffset.FromUnixTimeMilliseconds(time).LocalDateTime; } public class TradeResponse { public string status { get; set; } public IList<Trade> trades { get; set; } } class Program { static async Task Main(string[] args) { string url = "https://api.nobitex.ir/v2/trades/BTCUSDT"; using (var client = new HttpClient()) { var response = await client.GetAsync(url); if (response.StatusCode != System.Net.HttpStatusCode.OK) { Console.WriteLine("请求错误: " + response.StatusCode); return; } string json = await response.Content.ReadAsStringAsync(); // 直接反序列化为单个TradeResponse对象,匹配API返回的结构 var tradeResponse = JsonConvert.DeserializeObject<TradeResponse>(json); Console.WriteLine("请求状态: " + tradeResponse.status); Console.WriteLine("交易数量: " + tradeResponse.trades.Count); Console.WriteLine("------------------------------"); // 遍历每一笔交易数据并输出 foreach (var trade in tradeResponse.trades) { Console.WriteLine($"时间戳: {trade.time}"); Console.WriteLine($"本地时间: {trade.TradeTime}"); Console.WriteLine($"价格: {trade.price}"); Console.WriteLine($"成交量: {trade.volume}"); Console.WriteLine($"交易类型: {trade.type}"); Console.WriteLine("------------------------------"); } } } }
关键修正点
- 将根反序列化目标从
List<Example>改为TradeResponse(重命名类名更贴合语义),完全匹配API返回的单对象结构 - 把
Trade类的time字段类型从object改为long,对应API返回的毫秒级时间戳,同时新增转换为本地时间的属性提升易用性 - 移除了错误的第二次反序列化操作,直接从
TradeResponse的trades集合中遍历交易数据
内容的提问来源于stack exchange,提问作者محمد حسین مظفری
相关产品推荐
相关产品推荐

