2016-04-13 16 views
4

Ich habe viel mit Android gearbeitet, aber heute muss ich mit Xamarin arbeiten. Ich mache eine PCL-Klasse und ich versuche, ein JSON-Objekt aus einer Zeichenfolge (HttpWebResponse in eine Zeichenfolge konvertiert) für den Aufruf von einem Android-Wrapper zu erstellen.Xamarin PCL C# - Deserialize Zeichenfolge zu einem JSONObject/JSONArray

Nach einigen Recherchen konnte ich nichts finden, was wirklich meine Frage beantwortet.

Letztlich möchte ich in der Lage sein, genau wie dieser etwas zu nennen:

string value = jsonObject.get("key").getAsString(); 

ich eine Zeichenfolge von http-Antwort erhalten und dann will ich es in ein JSON-Objekt konvertieren. Wenn das JSON-Objekt erstellt wird, möchte ich einen Wert wie im Beispiel extrahieren. Allerdings mache ich es in einem PCL, also ist es möglich, dies in Xamarin/C# von einem PCL zu tun?

Danke für die Hilfe und das Lesen!

Antwort

5

können Sie deserialisieren die Zeichenfolge in ein Objekt mit Newtonsoft.Json Bibliothek:

Account account = JsonConvert.DeserializeObject<Account>(jsonFromServer);

Sie auch HttpClient Klasse statt HttpWebRequest verwenden können und automatisch Antwort in Ihr Objekt deserialisieren:

var client = new HttpClient(); 
var response = await client.GetAsync("/accounts"); 

Account account = await response.Content.ReadAsAsync<Account>(); 

Wenn Ihr Server gibt einen anderen StatusCode zurück, wenn ein Fehler auftritt. Sie können HttpResponseMessage.IsSuccessStatusCode verwenden, um zu entscheiden, welchen Typ die Antwort in die Deserialisierung aufnehmen soll. Wenn nicht, können Sie var jsonObject = JObject.Parse(jsonText); verwenden und Zugriff auf die Eigenschaften wie folgt aus: jsonObject["someKey"]

Sie werden Microsoft.AspNet.WebApi.Client Bibliothek von Nuget

+0

Dank für diese schnelle Antwort brauchen! Ich habe schon gesehen, dass ich es so machen kann wie du, also habe ich vielleicht etwas nicht verstanden. Wir sind in Ordnung, dass ich irgendwann eine Fehlerantwort bekommen kann und dann ist es nicht dasselbe Objekt wie Account (wenn ich deinen Code als Beispiel nehme). Also kann es entweder ein Account Objekt wie oder ein Fehler Objekt sein wie? Verstehst du was ich meine? – Emixam23

+0

@MaximeGuitte: Ich habe meine Antwort aktualisiert. – Giorgi

Verwandte Themen