我正在使用RestSharp来使用一个宁静的Web服务。我正在使用内置的Json反序列化器来反序列化响应。 这是回应。
[{"id":"1","latitude":"18.0155848","longitude":"-77.4988293","rating":"1","streetid":"1","username":"joel","verified":"1"},{"id":"2","latitude":"18.0155892","longitude":"-77.498774","rating":"1","streetid":"2","username":"joel","verified":"0"},{"id":"3","latitude":"18.0227736","longitude":"-77.4980039","rating":"1","streetid":"3","username":"joel","verified":"0"}]
这些是它被映射到的模型。
List<Pothole> list = new List<Pothole>();
public class Pothole
{
//getters and setters for the attributes of Pothole Model
public long Id { get; set;}
public double Latitude { get; set; }
public double Longitude { get; set; }
public double Rating{ get;set;}
public long StreetId { get; set; }
public string Username { get; set; }
public bool Verified { get; set; }
}
然而,当我进行调用时,数据没有被反序列化。我想知道json对类映射的响应是否存在问题。由于返回了一系列坑洞对象,我将响应映射到坑洼列表。我检查HTTP状态代码和响应的内容,以便返回数据,它只是反序列化导致问题。
答案 0 :(得分:3)
试试这个:
public class Pothole
{
public string id { get; set; }
public string latitude { get; set; }
public string longitude { get; set; }
public string rating { get; set; }
public string streetid { get; set; }
public string username { get; set; }
public string verified { get; set; }
}
C#区分大小写,因此填充C#对象时发生的反射将查找名称与JSON字符串中的名称完全相同的属性。
此外,如果您使用的是Visual Studio 2012 SP 1,您实际上可以将JSON文本粘贴为C#类。非常方便。
答案 1 :(得分:1)
或者您也可以使用:Json2Csharp
generate c# classes from json
答案 2 :(得分:0)
参加派对的时间较晚,但我认为我会投入0.02美元。我正在使用未修改版本的RestSharp.Portable 1.6.2 Xamarin PCL
我的json如下:
{"blah":{"iPAddress":"10.1.1.x","cPU":"1 vCPU","dNSName":"blah.blah.com"}}
使用下面的类,反序列化不适用于CPU,适用于DSName和IPAddress。
public class Blah
{
public string CPU { get; set; }
public string DNSName { get; set; }
public string IPAddress { get; set; }
}
但是,如果我将CPU更改为cPU,它可以正常工作。
public class Blah
{
public string cPU { get; set; }
public string DNSName { get; set; }
public string IPAddress { get; set; }
}
所以,感觉就像一个错误,只是想贡献。