簡體   English   中英

C# Json將REST API Json轉換為類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM