Вопрос

Я пытаюсь использовать RestSharp (http://restsharp.org/) в проекте Windows Phone 7, но у меня есть проблема, похоже с библиотекой NewTonsoft JSON.NET, которая использует 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 Скопировано в папку BIN моего приложения Windows Phone 7, поэтому я предполагаю, что он развернут на устройстве, но как-то он не загрузит его. Кто-нибудь испытал / решил что-то подобное? Спасибо.


Как запрошено, пример 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; }
}
Это было полезно?

Решение

Вам не нужно ни одного из [DataMember] Атрибуты, они не используются RestSharp.

Поскольку возвращенец JSON - это массив, вам нужно определить, что на массив:

client.ExecuteAsync<List<Song>>(request, callback);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top