Home > Back-end >  Deserialized Json object value is null
Deserialized Json object value is null

Time:11-03

I'm not able to get the value from OneDay.price_change. The HTTP response is OK and I'm getting the following:

HTTP Response

 "[{\"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"

However, for some reason, I'm not able to take the 1d price change. I'm not sure what could be the problem. Any help is appreciated!

enter image description here

Model:

   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>[email protected](@rez.Price) @rez.OneDay.Price_change</p>
    
      }

@rez.OneDay.Price_change error popup

CodePudding user response:

Problem is that your property name in json (1d) and property name in c# model (OneDay) is not matching.

Use the below if you are using System.Text.Json (.Net Core 3.0 and newer)

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

Use the below if you are using Newtonsoft (Before .Net Core 3.0)

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

CodePudding user response:

Your " public OneHour OneHour { get; set; } " and " public OneDay OneDay { get; set; } " properties should be bind to [JsonProperty("1h")] and [JsonProperty("1d")]

try this

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

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

result

-845.68642611

classes

 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; }
    }
  • Related