簡體   English   中英

為什么我的反序列化給我Newtonsoft.Json.JsonConvert一個錯誤?

[英]Why my deserialization is giving me an error Newtonsoft.Json.JsonConvert?

public List<CoinMarket> GetCoinMarket()
{
    List<CoinMarket> coinMarket = new List<CoinMarket>();
    var URLWebAPI = "http://190.202.54.19/wsZeus/api/Account/Markets/Get";
    try
    {
        using (var Client = new System.Net.Http.HttpClient())
        {
            var JSON =  Client.GetStringAsync(URLWebAPI);
            coinMarket = (List<CoinMarket>)Newtonsoft.Json.JsonConvert.DeserializeObject(JSON.Result);
        }
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine(@"    ERROR {0}", ex.Message);
    }
    return coinMarket;
}

它在扔,我不知道為什么。 序列化部分似乎出了點問題。 但是我證實了。

您使用的json解串器不正確。 DeserializeObject返回無法投射到List<T>自定義對象。 此輸出:

Newtonsoft.Json.Linq.JArray
SO20171129.CoinData[]
System.Collections.Generic.List`1[SO20171129.CoinData]

是此代碼的結果。

class Program
{
    static void Main(string[] args)
    {
        // returns Newtonsoft.Json.Linq.JArray
        var coinMarket = Newtonsoft.Json.JsonConvert.DeserializeObject(File.ReadAllText("get.json"));
        Console.WriteLine(coinMarket.GetType());
        // returns array of CoinData
        var coinMarketTyped = Newtonsoft.Json.JsonConvert.DeserializeObject<CoinData[]>(File.ReadAllText("get.json"));
        Console.WriteLine(coinMarketTyped.GetType());
        // returns List of CoinData
        var coinMarketTyped2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CoinData>>(File.ReadAllText("get.json"));
        Console.WriteLine(coinMarketTyped2.GetType());
    }
}

public class CoinData
{
    public string id { get; set; }
    public string name { get; set; }
    public string symbol { get; set; }
    public string rank { get; set; }
    public string price_usd { get; set; }
    public string price_btc { get; set; }
    public string __invalid_name__24h_volume_usd { get; set; }
    public string market_cap_usd { get; set; }
    public string available_supply { get; set; }
    public string total_supply { get; set; }
    public string percent_change_1h { get; set; }
    public string percent_change_24h { get; set; }
    public string percent_change_7d { get; set; }
    public string last_updated { get; set; }
}

我的猜測是您的json結構成員與CoinMarket類成員不匹配。

我要做的是在以下網站上復制json結果並生成相應的CoinMarket類: http ://json2csharp.com/

它將為您輸出正確的CoinMarket類。

 public class CoinMarket
{
    public string id { get; set; }
    public string name { get; set; }
    public string symbol { get; set; }
    public string rank { get; set; }
    public string price_usd { get; set; }
    public string price_btc { get; set; }
    [JsonProperty("24h_volume_usd")]
    public string h_volume_usd { get; set; }
    public string market_cap_usd { get; set; }
    public string available_supply { get; set; }
    public string total_supply { get; set; }
    public string percent_change_1h { get; set; }
    public string percent_change_24h { get; set; }
    public string percent_change_7d { get; set; }
    public string last_updated { get; set; }

}

}

這是我的CoinMarket課程

暫無
暫無

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

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