[英]Using JsonConvert.DeserializeObject to deserialize Json to a C# POCO class
[英]C# JsonConvert REST API Json to Class
我已經開始學習 C# 並且因此而變得瘋狂:
所以我已經閱讀了一個字符串的在線 API(原始 URL: https ://api.coincap.io/v2/assets)
{"data":
[{"id":"bitcoin","rank":"1","symbol":"BTC","name":"Bitcoin","supply":"19231150.0000000000000000","maxSupply":"21000000.0000000000000000","marketCapUsd":"329260408122.7321099930951000","volumeUsd24Hr":"4938807092.4540332151393315","priceUsd":"17121.2022225780626740","changePercent24Hr":"-0.1557069639360563","vwap24Hr":"17167.6185642050963449","explorer":"https://blockchain.info/"},
{"id":"ethereum","rank":"2","symbol":"ETH","name":"Ethereum","supply":"122373866.2178000000000000","maxSupply":null,"marketCapUsd":"154858258278.7620692762684030","volumeUsd24Hr":"1556598691.7310630183480862","priceUsd":"1265.4520369826888988","changePercent24Hr":"-0.3774876415990869","vwap24Hr":"1271.6091894467065872","explorer":"https://etherscan.io/"},
{"id":"tether","rank":"3","symbol":"USDT","name":"Tether","supply":"65708194111.5796100000000000","maxSupply":null,"marketCapUsd":"65788824004.4908415146900527","volumeUsd24Hr":"6971097526.7488883793650250","priceUsd":"1.0012270903804526","changePercent24Hr":"0.0236756537376818","vwap24Hr":"1.0002996279301237","explorer":"https://www.omniexplorer.info/asset/31"}],
"timestamp":1670800790134}
基本上我一直在嘗試做的是將 id 放入列表中,但還沒有設法解析數據。 我的代碼:
public class Coins
{
public Dictionary<string, ListDictionary> data { get; set; }
}
public class Program
{
static void Main(string[] args)
{
List<string> coin_list = new List<string>();
HttpClient Client = new HttpClient();
string URL = "https://api.coincap.io/v2/";
string response = Client.GetStringAsync(URL + "assets").Result;
Coins list = JsonConvert.DeserializeObject<Coins>(response);
foreach(item in list.data)
{
coin_list.add(item.id);
}
Console.ReadLine();
}
}
有人可以解釋我在這里做錯了什么嗎?
在過去的幾個小時里一直在試圖解決這個問題
如果你只需要 ids,你所有的代碼都可以放在一行中
List<string> ids = JObject.Parse(response.Content)["data"]
.Select(d => (string) d["id"]).ToList();
Console.WriteLine(string.Join(",",ids));
如果您需要更多數據,您可以將您需要的屬性添加到 Coins 類並將它們展示給我們,例如
List<Coin> coins = JObject.Parse(response.Content)["data"]
.Select(d => d.ToObject<Coin>()).ToList();
public class Coin
{
public string id { get; set; }
public string rank { get; set; }
public string symbol { get; set; }
public string name { get; set; }
public string supply { get; set; }
public string maxSupply { get; set; }
public string marketCapUsd { get; set; }
public string volumeUsd24Hr { get; set; }
public string priceUsd { get; set; }
public string changePercent24Hr { get; set; }
public string vwap24Hr { get; set; }
public string explorer { get; set; }
}
或者如果你想使用你的代碼,修復 Coins 類,你需要一個 json 列表,而不是字典
public class Coins
{
public List<Coin> data { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.