Question

I'm using the Newtonsoft Json (http://james.newtonking.com/json) library to deserialize some json into an object but having some trouble with a boolean value. Please see my example below. The example should run in LinqPad as long as you reference the Newtonsoft dll (I'm using the latest at the moment which has a file version of 6.0.3.17227). The issue is deserializing into the UpdateLocationsRequest object.

Any help is appreciated.

void Main()
{
    string json1 = "{\"token\":\"5b2a38c8-c211-481e-aa75-7d52fff6eb2f\",\"share\":true}";
    string json2 = "{\"token\":\"5b2a38c8-c211-481e-aa75-7d52fff6eb2f\",\"locationList\":[{\"desc\":\"This is a test\",\"name\":\"Andrew 3\",\"deviceLocationId\":\"a8d2bfae-4493-41cd-ae1e-ea0da66da0cf\",\"locType\":1,\"lon\":-80.27543,\"lat\":43.42618,\"share\":true}]}";

    TestClass req1 = JsonConvert.DeserializeObject<TestClass>(json1);
    UpdateLocationsRequest req2 = JsonConvert.DeserializeObject<UpdateLocationsRequest>(json2);

    json1.Dump("json1");
    req1.Dump("Boolean ok here");
    json2.Dump("json2");
    req2.Dump("Boolean not ok here.  Why not?");

}

// Define other methods and classes here
public class UpdateLocationsRequest
{
   public string token { get; set; }
   public List<LocationJson> locationList { get; set; }
}

public class LocationJson
{
   public string deviceLocationId { get; set; }
   public string name { get; set; }
   public string desc { get; set; }
   public int locType { get; set; }
   public float lat { get; set; }
   public float lon { get; set; }
   public bool show { get; set; }
}

public class TestClass {
    public string token {get; set;}
    public bool share {get; set;}
}
Was it helpful?

Solution

Your json bool value is share, but in your class it's show. Adjust one or the other so they match, and you should be good to go

OTHER TIPS

I found your problem. You LocationJson class has a boolean property named show whiles your json2 string has the property share. show is never updated. All other values are updated.

It is always a good thing to add breakpoints and step into your program and see what is going on.

Best of luck.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top