繁体   English   中英

反序列化的 Json 对象值为 null

[英]Deserialized Json object value is null

我无法从 OneDay.price_change 获得价值。 HTTP 响应正常,我得到以下信息:

HTTP 响应

 "[{\"id\":\"BTC\",\"currency\":\"BTC\",\"symbol\":\"BTC\",\"name\":\"Bitcoin\",\"logo_url\":\"https://s3.us-east-2.amazonaws.com/nomics-api/static/images/currencies/btc.svg\",\"status\":\"active\",\"price\":\"60947.08258854\",\"price_date\":\"2021-10-31T00:00:00Z\",\"price_timestamp\":\"2021-10-31T18:51:00Z\",\"circulating_supply\":\"18860037\",\"max_supply\":\"21000000\",\"market_cap\":\"1149464232662\",\"market_cap_dominance\":\"0.4078\",\"num_exchanges\":\"397\",\"num_pairs\":\"67587\",\"num_pairs_unmapped\":\"5196\",\"first_candle\":\"2011-08-18T00:00:00Z\",\"first_trade\":\"2011-08-18T00:00:00Z\",\"first_order_book\":\"2017-01-06T00:00:00Z\",\"rank\":\"1\",\"high\":\"66082.82561618\",\"high_timestamp\":\"2021-10-20T00:00:00Z\",\"1h\":{\"volume\":\"1248590564.91\",\"price_change\":\"-85.32656234\",\"price_change_pct\":\"-0.0014\",\"volume_change\":\"-218879322.04\",\"volume_change_pct\":\"-0.1492\",\"market_cap_change\":\"-1607003923.65\",\"market_cap_change_pct\":\"-0.0014\"},\"1d\":{\"volume\":\"39937857069.60\",\"price_change\":\"-845.68642611\",\"price_change_pct\":\"-0.0137\",\"volume_change\":\"1918883279.43\",\"volume_change_pct\":\"0.0505\",\"market_cap_change\":\"-15892518975.54\",\"market_cap_change_pct\":\"-0.0136\"}}]\n"

但是,由于某种原因,我无法接受 1d 价格变化。 我不确定可能是什么问题。 任何帮助表示赞赏!

在此处输入图片说明

模型:

   public class OneHour
    {
        public string Volume { get; set; }
        public string Price_change { get; set; }
        public string Price_change_pct { get; set; }
        public string Volume_change { get; set; }
        public string Volume_change_pct { get; set; }
        public string Market_cap_change { get; set; }
        public string Market_cap_change_pct { get; set; }
    }
    public class OneDay
    {
        public string Volume { get; set; }
        public string Price_change { get; set; }
        public string Price_change_pct { get; set; }
        public string Volume_change { get; set; }
        public string Volume_change_pct { get; set; }
        public string Market_cap_change { get; set; }
        public string Market_cap_change_pct { get; set; }
    }


    public class CryptoApiMain
    {
        public OneHour OneHour { get; set; }

        public OneDay OneDay { get; set; }

        public string Id { get; set; }

        public string Symbol { get; set; }

        public string Status { get; set; }

        public double Price { get; set; }

        public string Price_date { get; set; }

        public string Circulating_supply { get; set; }

        public string Num_exchanges { get; set; }


        public string Num_pairs { get; set; }

        public string Rank { get; set; }

        public string High { get; set; }

    }
    var theresponse = settingsService.CryptoApiResult(cryptoStock).Result;
        foreach (var rez in theresponse)
        {
           <span id="stockSymbolCrypto">@cryptoStock</span> 
     
<p>$@Convert.ToInt64(@rez.Price) @rez.OneDay.Price_change</p>
    
      }

@rez.OneDay.Price_change 错误弹出窗口

问题是 json ( 1d ) 中的属性名称和 c# 模型 ( OneDay ) 中的属性名称不匹配。

如果您使用System.Text.Json (.Net Core 3.0 和更新版本),请使用以下内容

[JsonPropertyName("1d")]
public OneDay OneDay { get; set; }

如果您使用的是Newtonsoft (.Net Core 3.0 之前),请使用以下内容

[JsonProperty(PropertyName = "1d")]
public OneDay OneDay { get; set; }

您的“ public OneHour OneHour { get; set; } ”和“ public OneDay OneDay { get; set; } ”属性应该绑定到 [JsonProperty("1h")] 和 [JsonProperty("1d")]

尝试这个

CryptoApiMain[] jsond = JsonConvert.DeserializeObject<CryptoApiMain[]>(json);

var price = jsond[0].OneDay.PriceChange;

结果

-845.68642611

班级

 public partial class CryptoApiMain
    {
        [JsonProperty("1h")]
        public One OneHour { get; set; }
        [JsonProperty("1d")]
        public One OneDay { get; set; }
        
        [JsonProperty("id")]
        public string Id { get; set; }

        [JsonProperty("currency")]
        public string Currency { get; set; }

        [JsonProperty("symbol")]
        public string Symbol { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("logo_url")]
        public Uri LogoUrl { get; set; }

        [JsonProperty("status")]
        public string Status { get; set; }

        [JsonProperty("price")]
        public string Price { get; set; }

        [JsonProperty("price_date")]
        public DateTimeOffset PriceDate { get; set; }

        [JsonProperty("price_timestamp")]
        public DateTimeOffset PriceTimestamp { get; set; }

        [JsonProperty("circulating_supply")]
        public long CirculatingSupply { get; set; }

        [JsonProperty("max_supply")]
        public long MaxSupply { get; set; }

        [JsonProperty("market_cap")]
        public string MarketCap { get; set; }

        [JsonProperty("market_cap_dominance")]
        public string MarketCapDominance { get; set; }

        [JsonProperty("num_exchanges")]
    
        public long NumExchanges { get; set; }

        [JsonProperty("num_pairs")]
        
        public long NumPairs { get; set; }

        [JsonProperty("num_pairs_unmapped")]
        public long NumPairsUnmapped { get; set; }

        [JsonProperty("first_candle")]
        public DateTimeOffset FirstCandle { get; set; }

        [JsonProperty("first_trade")]
        public DateTimeOffset FirstTrade { get; set; }

        [JsonProperty("first_order_book")]
        public DateTimeOffset FirstOrderBook { get; set; }

        [JsonProperty("rank")]
        public long Rank { get; set; }

        [JsonProperty("high")]
        public string High { get; set; }

        [JsonProperty("high_timestamp")]
        public DateTimeOffset HighTimestamp { get; set; }
}

public partial class One
{
    [JsonProperty("volume")]
    public string Volume { get; set; }

       [JsonProperty("price_change")]
        public string PriceChange { get; set; }

        [JsonProperty("price_change_pct")]
        public string PriceChangePct { get; set; }

        [JsonProperty("volume_change")]
        public string VolumeChange { get; set; }

        [JsonProperty("volume_change_pct")]
        public string VolumeChangePct { get; set; }

        [JsonProperty("market_cap_change")]
        public string MarketCapChange { get; set; }

        [JsonProperty("market_cap_change_pct")]
        public string MarketCapChangePct { get; set; }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM