2010-08-21 128 views
3

我試圖在Windows Phone 7項目中使用RestSharp(http://restsharp.org/),但我遇到了一個問題,它似乎與RestSharp使用的Newtonsoft Json.NET庫有關。當我試圖執行像這樣我的代碼:在Windows Phone 7中使用RestSharp

_restClient.ExecuteAsync<Model.Song>(restRequest, (response) => 
{ 
    if (response.StatusCode == HttpStatusCode.OK) { } 
    else { } 
}); 

,我發現了以下錯誤:

Could not load type 'Newtonsoft.Json.Linq.JArray' from assembly 'Newtonsoft.Json.Compact, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30AD4FE6B2A6AEED'.

Newtonsoft.Json.Compact.dll被複制到我的Windows Phone 7應用程序的Bin文件夾,所以我假設它被部署到設備上,但不知何故它不會加載它。有沒有人遇到/解決過類似的問題?謝謝。


按照要求,JSON的例子:[{"type":"Song","id":60097,"title":"A Place Where You Belong","artist":{"type":"Artist","id":17,"nameWithoutThePrefix":"Bullet For My Valentine","useThePrefix":false}}]

及其類別:

[DataContract] 
public class Song 
{ 
    [DataMember(Name = "id")] 
    public int Id { get; set; } 

    [DataMember(Name = "title")] 
    public string Title { get; set; } 

    [DataMember(Name = "artist")] 
    public Artist Artist { get; set; } 
} 

[DataContract] 
public class Artist 
{ 
    [DataMember(Name = "id")] 
    public int Id { get; set; } 

    [DataMember(Name = "nameWithoutThePrefix")] 
    public string Name { get; set; } 

    [DataMember(Name = "useThePrefix")] 
    public bool UsePrefix { get; set; } 
} 
+0

你不是第一個拿到這個問題。你可以發佈你試圖使用的JSON和C#類嗎? – 2010-08-21 18:58:42

+0

添加到原始文章,希望這是可以解決的問題,因爲'DataContractJsonSerializer'對我來說真的不是很好。 – RajenK 2010-08-22 06:34:04

回答

3

你不需要任何的[DataMember]屬性的,他們不使用RestSharp 。

由於JSON返回的是一個數組,你需要反序列化到一個數組:

client.ExecuteAsync<List<Song>>(request, callback); 
+0

這似乎並沒有伎倆。 'List '仍然出現同樣的錯誤:''無法從程序集'Newtonsoft.Json.Compact,Version = 3.5.0.0,Culture = neutral,PublicKeyToken ='加載類型'Newtonsoft.Json.Linq.JArray' 30AD4FE6B2A6AEED'。'' 它可能是因爲RestSharp不使用'[DataMember]'屬性,它不會從JSON ID轉換到我自己的屬性名稱? IE瀏覽器。 'title-> Title','nameWithoutThePrefix-> Name',從而導致錯誤? – RajenK 2010-08-27 09:12:25

+0

名稱被自動翻譯http://github.com/johnsheehan/RestSharp/wiki/Deserialization 您可以在非WP7項目中試用它,並告訴我它是否有效? – 2010-08-27 19:21:39

+0

讓我看看我是否理解正確:我的類是否需要具有與JSON屬性完全相同的命名,還是使用'[DataMember]'屬性將JSON名稱鏈接到我的類屬性名稱?我會嘗試一個非WP7項目,並會告訴你它是否有效。 – RajenK 2010-08-30 18:29:28