我在将JSON文件从Web反序列化到List
时遇到了问题。
我的代码在下面,但是它没有执行,显示Newtonsoft.Json.JsonSerializationException
。
static void Main(string[] args)
{
List<Root> coinDatas = new List<Root>(); ;
callApi(coinDatas);
Console.ReadKey();
}
private static async void callApi(List<Root> coinDatas)
{
string url = "https://api.coinstats.app/public/v1/coins?skip=0&limit=50¤cy=USD";
HttpClient httpClient = new HttpClient();
var httpResponse = await httpClient.GetAsync(url);
string jsonResponse = await httpResponse.Content.ReadAsStringAsync();
coinDatas = JsonConvert.DeserializeObject<List<Root>>(jsonResponse);
}
public class Coin
{
public string id { get; set; }
public string icon { get; set; }
public string name { get; set; }
public string symbol { get; set; }
public int rank { get; set; }
public double price { get; set; }
public double priceBtc { get; set; }
public double volume { get; set; }
public double marketCap { get; set; }
public double availableSupply { get; set; }
public double totalSupply { get; set; }
public double priceChange1h { get; set; }
public double priceChange1d { get; set; }
public double priceChange1w { get; set; }
public string contractAddress { get; set; }
public int? decimals { get; set; }
}
public class Root
{
public List<Coin> coins { get; set; }
}
2条答案
按热度按时间bvjveswy1#
我已经从你的网址下载了JSON。它看起来像这样:
我想ytour问题在
coinDatas = JsonConvert.DeserializeObject<List<Root>>(jsonResponse);
行。您只有一个根元素,下面列出了它们的列表。
而且,顺便说一下,您的代码不返回任何值。
我建议你把你的方法改成这样的:
那么你可以在Main中使用这个方法(注意这个方法中的
async
单词):7rtdyuoh2#
如果你只需要一个硬币列表,你可以把代码改为