문제

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