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;}
}
有帮助吗?

解决方案

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

其他提示

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top