2013-03-06 20 views
2

我正在使用RestSharp來使用restful web服務。我正在使用內置的Json解串器來反序列化響應。 這是迴應。Json響應類映射Restharp反序列化

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

然而,當我使數據是不是被deserialized.I想知道是否有與JSON響應到類映射問題的呼籲。由於返回的坑洞物體數組,我將映射到一個坑洞列表。我檢查HTTP狀態代碼和響應的內容,以便數據被返回,其正好是反序列化導致的問題。

+0

我猜你有一個JSON和你正在映射的類之間的情況的差異問題... – 2013-03-06 02:36:58

+0

@SteveWellens更新 – 2013-03-06 02:39:10

+0

@PaulSasik是的,這就是我有一個問題。 – 2013-03-06 02:39:50

回答

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

+0

非常感謝Paul,這工作得很好。 – 2013-03-06 04:05:58

+1

RestSharp不區分大小寫,即無論情況如何,它都將反序列化,這是它的最大優點。 – 2013-03-06 06:57:22

+0

無論如何要指定它如何反序列化?我不想在我的C#對象中遵循JSON的小寫約定。 – 2013-06-28 02:17:41

0

遲到了,但我想我會在我的$ 0.02扔掉。我使用RestSharp.Portable 1.6.2 Xamarin PCL

的未修改版本我有JSON如下:

{"blah":{"iPAddress":"10.1.1.x","cPU":"1 vCPU","dNSName":"blah.blah.com"}} 

與下面的類中,deserialzation不適用於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,只是想貢獻。

+0

我希望你需要正確的情況下所有的屬性,而不僅僅是cPU? – Myster 2015-05-07 21:28:18