Chris V.
Chris V.

Reputation: 1143

cant deserialize json string c#

I have the following json successfully back from the api call:

  {
   "Done":{
      "WebHotspotList":[
         {
            "address":"112esBMAPaRTX9fotk74oT6qYnsixPCXW88r1cNeTdRZuzZx2eFu",
            "rewards_total":0.48443026,
            "geo_long_city":"Fort Myers",
            "geo_long_country":"United States",
            "geo_long_state":"Florida",
            "geo_long_street":"Hampton Park Court",
            "geo_short_city":"Fort Myers",
            "geo_short_country":"US",
            "geo_short_state":"FL",
            "block":588158,
            "block_added":584666,
            "location":"8c4413701cdbbff",
            "name":"tame-sable-dinosaur",
            "nonce":1,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.166534423828125,
            "score_update_height":588112,
            "lat":26.583755808331496,
            "lng":-81.734861907528042,
            "status_gps":null,
            "status_height":588133,
            "status_online":"online",
            "geo_short_street":"Hampton Park Ct",
            "geo_city_id":"Zm9ydCBteWVyc2Zsb3JpZGF1bml0ZWQgc3RhdGVz"
         },
         {
            "address":"11DbWc7WiwzqE6Yf7a6onxTA1oPTTN5XB3H18vazLF6e6qCD2cH",
            "rewards_total":3.62155897,
            "geo_long_city":"Fort Myers",
            "geo_long_country":"United States",
            "geo_long_state":"Florida",
            "geo_long_street":"Shoreside Court",
            "geo_short_city":"Fort Myers",
            "geo_short_country":"US",
            "geo_short_state":"FL",
            "block":588158,
            "block_added":571225,
            "location":"8c441370110d5ff",
            "name":"active-ultraviolet-bison",
            "nonce":3,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.13067626953125,
            "score_update_height":588158,
            "lat":26.584657124799811,
            "lng":-81.741675006677724,
            "status_gps":null,
            "status_height":588103,
            "status_online":"online",
            "geo_short_street":"Shoreside Ct",
            "geo_city_id":"Zm9ydCBteWVyc2Zsb3JpZGF1bml0ZWQgc3RhdGVz"
         },
         {
            "address":"1129ENpMcxLZuskVDNeog4WwRjpCAn9Nz2fQwuyxU3iVXbTgA3xY",
            "rewards_total":82.23821902,
            "geo_long_city":"Cape Coral",
            "geo_long_country":"United States",
            "geo_long_state":"Florida",
            "geo_long_street":"Southwest 9th Avenue",
            "geo_short_city":"Cape Coral",
            "geo_short_country":"US",
            "geo_short_state":"FL",
            "block":588158,
            "block_added":531703,
            "location":"8c441338085cdff",
            "name":"curved-tangelo-worm",
            "nonce":1,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.407379150390625,
            "score_update_height":588118,
            "lat":26.635174041942353,
            "lng":-81.994893441775318,
            "status_gps":null,
            "status_height":588136,
            "status_online":"online",
            "geo_short_street":"SW 9th Ave",
            "geo_city_id":"Y2FwZSBjb3JhbGZsb3JpZGF1bml0ZWQgc3RhdGVz"
         },
         {
            "address":"112hXZbzTd5NL8w9tzgxUR1xLT54QMwF8TXf3qC8MnYcPBzbRejg",
            "rewards_total":242.20892512,
            "geo_long_city":"San Diego",
            "geo_long_country":"United States",
            "geo_long_state":"California",
            "geo_long_street":"Felspar Street",
            "geo_short_city":"San Diego",
            "geo_short_country":"US",
            "geo_short_state":"CA",
            "block":588158,
            "block_added":531691,
            "location":"8c29a40040045ff",
            "name":"tame-cloud-aphid",
            "nonce":2,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.3829193115234375,
            "score_update_height":588124,
            "lat":32.802329272122954,
            "lng":-117.23529038681818,
            "status_gps":null,
            "status_height":588095,
            "status_online":"online",
            "geo_short_street":"Felspar St",
            "geo_city_id":"c2FuIGRpZWdvY2FsaWZvcm5pYXVuaXRlZCBzdGF0ZXM"
         },
         {
            "address":"112LCRKPWa8UpG9TwK33mLBQUL8ML2sicbux5ab2bAGJy33NZmm1",
            "rewards_total":5.58308855,
            "geo_long_city":"Orlando",
            "geo_long_country":"United States",
            "geo_long_state":"Florida",
            "geo_long_street":"Tally Ho Avenue",
            "geo_short_city":"Orlando",
            "geo_short_country":"US",
            "geo_short_state":"FL",
            "block":588158,
            "block_added":531684,
            "location":"8c44a908b0c69ff",
            "name":"colossal-mango-caribou",
            "nonce":3,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.211395263671875,
            "score_update_height":588062,
            "lat":28.577658355985609,
            "lng":-81.205853978803276,
            "status_gps":null,
            "status_height":588143,
            "status_online":"online",
            "geo_short_street":"Tally Ho Ave",
            "geo_city_id":"b3JsYW5kb2Zsb3JpZGF1bml0ZWQgc3RhdGVz"
         },
         {
            "address":"11dvb9sxx3dnxhutSSVcqidYaVMWLaXsc15VWHxeQnKNGv6PAM2",
            "rewards_total":26.15705053,
            "geo_long_city":"Cape Coral",
            "geo_long_country":"United States",
            "geo_long_state":"Florida",
            "geo_long_street":"Southwest 15th Terrace",
            "geo_short_city":"Cape Coral",
            "geo_short_country":"US",
            "geo_short_state":"FL",
            "block":588158,
            "block_added":503866,
            "location":"8c441338592bbff",
            "name":"square-laurel-squid",
            "nonce":2,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.0079345703125,
            "score_update_height":588155,
            "lat":26.624215777622073,
            "lng":-82.017175824730046,
            "status_gps":null,
            "status_height":588145,
            "status_online":"online",
            "geo_short_street":"SW 15th Terrace",
            "geo_city_id":"Y2FwZSBjb3JhbGZsb3JpZGF1bml0ZWQgc3RhdGVz"
         },
         {
            "address":"112gVjksQAaa2a33eDozxu243RNFTncc9q2xXF2BvwQZcS7nZBKj",
            "rewards_total":157.23587732,
            "geo_long_city":"San Diego",
            "geo_long_country":"United States",
            "geo_long_state":"California",
            "geo_long_street":"Mount La Platta Drive",
            "geo_short_city":"San Diego",
            "geo_short_country":"US",
            "geo_short_state":"CA",
            "block":588158,
            "block_added":472824,
            "location":"8c29a40150043ff",
            "name":"festive-navy-oyster",
            "nonce":2,
            "owner":"12ye1K1sbGVffG1hQdczozS5Ykg6K6ZCLrSJFr4Duv4srP8GgD8",
            "score":0.0290069580078125,
            "score_update_height":588128,
            "lat":32.826945251214731,
            "lng":-117.18764050067978,
            "status_gps":null,
            "status_height":588126,
            "status_online":"online",
            "geo_short_street":"Mt La Platta Dr",
            "geo_city_id":"c2FuIGRpZWdvY2FsaWZvcm5pYXVuaXRlZCBzdGF0ZXM"
         }
      ]
   }
}

and I am unable to parse the result into an array/list of Hotspot objects. I've tried the following:

var json = response.Content.ReadAsStringAsync().Result;
HotspotArray hotspotArray = JsonConvert
  .DeserializeObject<HotspotArray>(json);
Hotspot[] hotspots = hotspotArray.Hotspots; 
var hotspotNames = "";

 for (int i = 0; i < hotspots.Length; i++)
 {
      hotspotNames += hotspots[i].Name + " ";
  }

  output.Text = hotspotNames;
  }
 }
}

    public class HotspotArray
    {
        [JsonProperty("WebHotspotList")]
        public Hotspot[] Hotspots { get; set; }
    }

    public class Hotspot
    {
        [JsonProperty("address")]
        public string Address { get; set; }

        [JsonProperty("rewards_total")]
        public decimal RewardsTotal { get; set; }

        [JsonProperty("geo_long_city")]
        public string GeoLongCity { get; set; }

        [JsonProperty("geo_long_country")]
        public string GeoLongCountry { get; set; }

        [JsonProperty("geo_long_state")]
        public string GeoLongState { get; set; }

        [JsonProperty("geo_long_street")]
        public string GeoLongStreet { get; set; }

        [JsonProperty("geo_short_city")]
        public string GeoShortCity { get; set; }

        [JsonProperty("geo_short_country")]
        public string GeoShortCountry { get; set; }

        [JsonProperty("geo_short_state")]
        public string GeoShortState { get; set; }

        [JsonProperty("block")]
        public int Block { get; set; }

        [JsonProperty("block_added")]
        public int BlockAdded { get; set; }

        [JsonProperty("location")]
        public string Location { get; set; }

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

        [JsonProperty("nonce")]
        public int Nonce { get; set; }

        [JsonProperty("owner")]
        public string Owner { get; set; }

        [JsonProperty("score")]
        public decimal Score { get; set; }

        [JsonProperty("score_update_height")]
        public int ScoreUpdateHeight { get; set; }

        [JsonProperty("lat")]
        public decimal Lat { get; set; }

        [JsonProperty("lng")]
        public decimal Lon { get; set; }

        [JsonProperty("status_gps")]
        public string StatusGPS { get; set; }

        [JsonProperty("status_height")]
        public int StatusHeight { get; set; }

        [JsonProperty("status_online")]
        public string StatusOnline { get; set; }

        [JsonProperty("geo_short_street")]
        public string GeoShortStreet { get; set; }

        [JsonProperty("geo_city_id")]
        public string GeoCityID { get; set; }
    }

However the data keeps coming back null...hotspots array is null. What am I missing here? TIA

Upvotes: 0

Views: 54

Answers (1)

Quercus
Quercus

Reputation: 2065

Top-level in your json is Type with property Done. Create type:

    public class HotspotResponse
    {
        public HotspotArray Done { get; set; }
    }

and deserialize json string into this class.

Upvotes: 2

Related Questions