C# 类映射反序列化的Json响应

C# 类映射反序列化的Json响应,c#,json,windows-phone-7,deserialization,restsharp,C#,Json,Windows Phone 7,Deserialization,Restsharp,我正在使用RestSharp来使用restful 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","rat

我正在使用RestSharp来使用restful 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; }
}
List List=新列表();
公共级坑洞
{
//坑洞模型属性的getter和setter
公共长Id{get;set;}
公共双纬度{get;set;}
公共双经度{get;set;}
公共双重评级{get;set;}
公共长街ID{get;set;}
公共字符串用户名{get;set;}
公共bool已验证{get;set;}
}
但是,当我调用时,数据没有被反序列化。我想知道对类映射的json响应是否有问题。我正在将响应映射到一个由于返回一组坑洞对象而产生的坑洞列表。我检查HTTP状态代码和响应内容,以便返回数据,这只是反序列化导致的问题。

尝试以下方法:

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#类。非常方便。

或者您也可以使用:


晚会迟到了,但我想我应该把我的0.02美元投进去。我使用的是未经修改的RestSharp.Portable 1.6.2 Xamarin PCL版本

我的建议如下:

{"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; }
}

因此,感觉像是一个bug,只是想有所贡献。

我猜您对JSON和您要映射到的类之间的case差异有疑问…@SteveWellensupdated@PaulSasik是的,这就是我遇到的问题。模型/类是否准确?您需要匹配JSON变量的大小写。id而不是id等。RestSharp不区分大小写,即无论大小写,它都将反序列化,这是它的最大优势。是否有任何方法来指定它如何反序列化?我不想在我的C#对象中遵循JSON的小写约定。@Nick:你是在问Toni还是我
If me:
no,不是当前版本,
If Toni:
查看RestSharp库是否可配置我希望您需要所有属性的正确案例,而不仅仅是cPU?
public class Blah
{
    public string cPU { get; set; }
    public string DNSName { get; set; }
    public string IPAddress { get; set; }
}