2016-10-04 2 views
1

Ich habe ein JSON-Objekt und ich versuche, es in mein C# -Objekt zu konvertieren. Hier ist meine JSON:JSON-Objekt in C# -Objekt konvertieren

{"GuvenlikNoktaArray": {"GuvenlikNoktası": [{"Id": 1,"GuvenlikNoktası1":"SANTIYE","KartNo":"000001889174217","Sira": 1},{"Id": 2,"GuvenlikNoktası1":"INSAAT","KartNo":"000000803567858","Sira": 2},{"Id": 3,"GuvenlikNoktası1":"ÇALISMA","KartNo":"000003417926233","Sira": 3},{"Id": 4,"GuvenlikNoktası1":"GÜVENLIK","KartNo":"000001888909897","Sira": 4}]}} 

Und mein C# -Klasse:

public partial class GuvenlikNoktası 
{ 
    public GuvenlikNoktası() 
    { 
     this.GüvenlikNoktasıOlay = new HashSet<GüvenlikNoktasıOlay>(); 
     this.PanikButonuAlarmlari = new HashSet<PanikButonuAlarmlari>(); 
    } 

    public int Id { get; set; } 
    public string GuvenlikNoktası1 { get; set; } 
    public string KartNo { get; set; } 
    public string Sira { get; set; } 

    public virtual ICollection<GüvenlikNoktasıOlay> GüvenlikNoktasıOlay { get; set; } 
    public virtual ICollection<PanikButonuAlarmlari> PanikButonuAlarmlari { get; set; } 
} 

Und zuletzt, mein convert Versuch:

public void AddIstasyon(string json_string) 
{ 
    GuvenlikNoktası result = new JavaScriptSerializer().Deserialize<GuvenlikNoktası>(json_string); 
} 

Ich erhalte keine Fehler, aber wenn ich debuged, Ich sehe, dass alle Attribute innerhalb von 'result' null sind. Es scheint wie ein leeres Objekt. Wie kann ich ein korrektes 'GuvenlikNoktası'-Objekt erhalten? (Übrigens bin ich mir ziemlich sicher, dass ich das Json-Objekt richtig bekomme).

+1

Zunächst ist Ihre 'Sira' -Eigenschaft als eine Zeichenfolge definiert, wenn sie im JSON-Array eine Ganzzahl ist. – ThePerplexedOne

+1

Weitere Anleitung zur Verwendung von JSON mit C#: http://www.newtonsoft.com/json –

+0

Zweitens, wenn Sie deserializing sind, scheint es, dass Sie Ihre JSON in eine einzelne Instanz Ihrer 'GuvenlikNoktası'-Klasse deserialisieren, wenn die JSON selbst ist ein Array dieser Klasse. – ThePerplexedOne

Antwort

1

Wenn Sie diese JSON Struktur behalten müssen, wie sie ist Sie JObject verwenden kann sich im JSON-Eigenschaften zu navigieren, bis Sie erreichen Ihre Zielobjekte zu deserizlize. Bitte versuchen Sie es mit dem folgenden Code.

PS: Dieser Code verwendet Newtonsoft.Json;

using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace SO_39847703 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string json = "{\"GuvenlikNoktaArray\": {\"GuvenlikNoktası\": [{\"Id\": 1,\"GuvenlikNoktası1\":\"SANTIYE\",\"KartNo\":\"000001889174217\",\"Sira\": 1},{\"Id\": 2,\"GuvenlikNoktası1\":\"INSAAT\",\"KartNo\":\"000000803567858\",\"Sira\": 2},{\"Id\": 3,\"GuvenlikNoktası1\":\"ÇALISMA\",\"KartNo\":\"000003417926233\",\"Sira\": 3},{\"Id\": 4,\"GuvenlikNoktası1\":\"GÜVENLIK\",\"KartNo\":\"000001888909897\",\"Sira\": 4}]}}"; 
      AddIstasyon(json); 
     } 

     public static void AddIstasyon(string json_string) 
     { 
      dynamic jsonObject = JObject.Parse(json_string); 
      string jsonToDeserializeStrongType = jsonObject["GuvenlikNoktaArray"]["GuvenlikNoktası"].ToString(); 
      List<GuvenlikNoktası> result = JsonConvert.DeserializeObject<List<GuvenlikNoktası>>(jsonToDeserializeStrongType); ; 
     } 
    } 

    public partial class GuvenlikNoktası 
    { 
     public GuvenlikNoktası() 
     { 
      this.GüvenlikNoktasıOlay = new HashSet<GüvenlikNoktasıOlay>(); 
      this.PanikButonuAlarmlari = new HashSet<PanikButonuAlarmlari>(); 
     } 

     public int Id { get; set; } 
     public string GuvenlikNoktası1 { get; set; } 
     public string KartNo { get; set; } 
     public string Sira { get; set; } 

     public virtual ICollection<GüvenlikNoktasıOlay> GüvenlikNoktasıOlay { get; set; } 
     public virtual ICollection<PanikButonuAlarmlari> PanikButonuAlarmlari { get; set; } 
    } 

    public class GüvenlikNoktasıOlay 
    { 

    } 

    public class PanikButonuAlarmlari 
    { 

    } 
} 

this helps

1

Ihre JSON-Daten und Ihre Klassendefinition passen nicht zusammen. Daher werden die Standardwerte (NULL) vom Serialisierungsprogramm bereitgestellt.

Um die angegebenen JSON-Daten eine Klassenstruktur benötigen deserialisieren wie:

public class Root 
{ 
    public LevelOne GuvenlikNoktaArray {get; set;} 
} 

public class LevelOne { 
    public IEnumerable<GuvenlikNoktası> GuvenlikNoktası {get; set;} 
} 
+0

Ja, RBOE ist korrekt. Verwenden Sie dieses 'https: // jsonformatter.curiousconcept.com /', um zu sehen, wie die Struktur aussieht, und verwenden Sie dann 'http: // json2csharp.com/', um die Struktur zu sehen, die analysiert werden muss. –

0

Sie diese Klasse verwenden können.

public class GuvenlikNoktası 
{ 
    public int Id { get; set; } 
    public string GuvenlikNoktası1 { get; set; } 
    public string KartNo { get; set; } 
    public int Sira { get; set; } 
} 

public class GuvenlikNoktaArray 
{ 
    public IList<GuvenlikNoktası> GuvenlikNoktası { get; set; } 
} 

public class Example 
{ 
    public GuvenlikNoktaArray GuvenlikNoktaArray { get; set; } 
} 

können Sie diesen Link http://jsonutils.com/ Für Ihre Referenz.

Verwandte Themen