Frage

Ich versuche RestSharp ( http://restsharp.org/ ) in einem Windows Phone 7 zu verwenden Projekt, aber ich habe ein Problem, dass RestSharp Anwendungen mit der Newtonsoft Json.NET Bibliothek scheint. Wenn ich versuche, meinen Code auszuführen wie folgt:

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

ich die folgende Fehlermeldung erhalten:

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 wird in den Ordner Ist mein Windows Phone 7-Anwendung kopiert, so dass ich nehme an, es in das Gerät eingesetzt wird, aber irgendwie wird es nicht laden. Hat jemand erlebt / gelöst etwas ähnliches? Danke.


Wie gewünscht, ein Beispiel für die JSON: [{"type":"Song","id":60097,"title":"A Place Where You Belong","artist":{"type":"Artist","id":17,"nameWithoutThePrefix":"Bullet For My Valentine","useThePrefix":false}}]

Und die Klassen:

[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; }
}
War es hilfreich?

Lösung

Sie brauchen keine der [DataMember] Attribute, werden sie von RestSharp nicht verwendet.

Da die JSON zurückgegeben ein Array ist, müssen Sie das auf ein Array deserialisieren:

client.ExecuteAsync<List<Song>>(request, callback);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top