3

Windows Phone 7プロジェクトでRestSharp(http://restsharp.org/)を使用しようとしていますが、RestSharpが使用するNewtonsoftJson.NETライブラリに問題があるようです。次のようにコードを実行しようとすると、次のようになります。

_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.dllWindows 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; }
}
4

1 に答える 1

3

属性は必要ありません[DataMember]。RestSharpでは使用されません。

返されるJSONは配列であるため、それを配列に逆シリアル化する必要があります。

client.ExecuteAsync<List<Song>>(request, callback);
于 2010-08-26T19:22:28.420 に答える