簡體   English   中英

轉換列表<objects>字典<string, string>在 C#</string,></objects>

[英]Convert List<objects> to a Dict <String, String> in C#

我想創建一個應用程序來顯示某種硬幣的價值。 我使用庫幣 API。 當我請求定價信息時,我收到以下回復:

{
    "code": "200000",
    "data_fiat": {
        "LOKI": "0.39646657",
        "EXY": "0.01427250",
        "IOTX": "0.00411990",
        "MHC": "0.0035",
        "MXW": "0.14063173",
        ...
    }
}

我使用 Deserialze 和 Foreach 循環將其轉換為 data_fiat 對象列表。 現在,當我想獲得一個值時,我只需鍵入 data_fiat.LOKI。

問題是我需要為每個可能的硬幣(200+)及其難看的代碼創建一個 IF。 有沒有辦法以某種方式將其轉換為字典,以便我可以使用 data_fiatDict[VAR]?

這就是我現在所擁有的:

public static async Task<List<data_fiat>> GetPrices()
{
    FiatPrices data = new FiatPrices();
    List<data_fiat> price = new List<data_fiat>();

    string url = $"https://api.kucoin.com/api/v1/prices";
    using (HttpClient client = GetHttpClient())
    {
        try
        {
            string json = await client.GetStringAsync(url);
            data = JsonConvert.DeserializeObject<FiatPrices>(json);
            foreach (data_fiat item in data.price)
            {
                price.Add(item);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    return price;
}

這將返回 data_fiat 的列表

private async Task GenerateData(Coins Selection)
{
    Coindata.BindingContext = Selection;
    String CoinSelection = Selection.Name;
    pricelbl.Text = ??Dictionary??[CoinSelection];
}

所以我需要一本字典或類似的東西在??字典?? 點。

如果您使用字典聲明FiatPrices類,JsonConvert 將自動反序列化到該字典中。

public class FiatPrices
{
    [JsonProperty("code")]
    public int Code { get; set; }

    [JsonProperty("data_fiat")]
    public Dictionary<string, decimal> Prices { get; set; }
}

然后你可以反序列化和查詢

FiatPrices data = JsonConvert.DeserializeObject<FiatPrices>(json);
decimal price = data.Prices["IOTX"];

如果你只需要字典,你可以用一個單一的分配來提取它(不需要循環):

Dictionary<string, decimal> priceDict = data.Prices;

或在您的GetPrices方法中使用經過調整的返回類型Task<Dictionary<string, decimal>>

return data.Prices;

您可以使用JObject並選擇所需的節點,然后將其反序列化為Dictionary<string,string>

所以不要這樣做:

data = JsonConvert.DeserializeObject<FiatPrices>(json);
foreach (data_fiat item in data.price)
{
    price.Add(item);
}

你可以這樣做:

JObject jObj = JObject.Parse(json);

var data_dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(jObj["data_fiat"].ToString());

轉換列表<string>列出<object>在 C#<div id="text_translate"><p> 我有一個看起來像這樣的字符串列表:</p><pre> var rawData = new List<string>(){ "EUR/USD;123", "EUR/GBP;321", "BTC/USD;2321"};</pre><p> 我有以下結構:</p><pre> public class Data { public string instrument { get; set; } public string positions { get; set; } }</pre><p> 我的目標是有一個字符串數據列表,在';'上分開 char 並轉換為對象列表。</p><pre> var processedData = new List<Data>(); // processedData[0] ( instrument = EUR/USD, positions = 123 ) // processedData[1] ( instrument = EUR/GBP, positions = 321) // processedData[2] ( instrument = BTC/USD, positions = 2321)</pre><p> 你知道我該怎么做嗎?</p></div></object></string>

[英]Convert List<string> to List<object> in C#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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