2016-08-03 17 views
1

Ich habe wenig Problem mit Deserialize JSON-Objekt. Mein json von http url:Deserialize Json Objekt Xamarin android C#

Screen of my downloaded JSON

Ich weiß nicht, wie deserialisieren dynamisch Schaltflächen Erstellen zu machen. Ich finde heraus, wie man Buttons mit Text erstellt, aber ich weiß nicht, wie man sie mit Optionen macht, die sie haben. Ich versuche, diese Optionen in Windows Form App für Test zu bekommen, aber App wird abstürzen. Danke für die Hilfe.

Antwort

1

Ihre Klassen sollten wie etwas sein:

public class Type 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public bool closedQuestion { get; set; } 
    public bool multiAnswer {get; set;} 
    public bool usesImage {get; set; } 
} 
public class RootObject 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public Type type { get; set; } 
    public List<string> options { get; set; } 
} 

Mit freundlicher Genehmigung von: json2csharp.com

Dann sollten Sie in der Lage sein, Ihre json deserialisieren, mit Newtonsoft.Json:

List<RootObject> myData = JsonConvert.DeserializeObject<List<RootObject>>(json); 
2

Mit Newtonsoft.NET:

var obj = JsonConvert.DeserializeObject(json); 

Sie können auch eine Paarung Klasse herzustellen und zu verwenden Generika:

public JsonClass { 
    // Do this for each property you want to map. 
    [JsonProperty(PropertyName="id")] 
    public int Id { get; set; } 

    [JsonProperty(PropertyName="name")] 
    public int Name { get; set; } 

    [JsonProperty(PropertyName="type")] 
    public MessageType Message { get; set; } 
} 

public class MessageType { 
    [JsonProperty(PropertyName="id")] 
    public int Id { get; set; } 
    // etc... 
} 

dann tun:

JsonClass obj = JsonConvert.DeserializeObject<JsonClass>(json); 
MessageType messageType = obj.Message; 
+0

Diese meine Klassen sind. [link] https://drive.google.com/file/d/0BzNNTHZ5XJe4Z0JhdV8tbFh5ME0/view?usp=sharing [link] – coldzero

+1

Awesome! Verwenden Sie also die Beispielklassen, die ich geschrieben habe, setzen Sie das korrekte Attribut '[JsonProperty (PropertyName =" XXX ")]' über jede Eigenschaft. 'XXX' wird durch den JSON-Namen des Wertes ersetzt. Für diesen JSON-String: '{name:" Nick ", age:" 21 "}, hätten wir folgendes:' [JsonProperty (PropertyName = "name")] 'über' public string Name {get; einstellen; } '. –

+1

Nützlicher Tipp: Verwenden Sie http://json2csharp.com, um C# -Klassen und -Eigenschaften aus einer gültigen JSON-Zeichenfolge abzurufen. Einfach kopieren/einfügen und Sie erhalten den Code, um die Klassen für 'JsonConvert' zu' Deserialize' zu ​​erstellen. –