2017-07-21 4 views
0

Bitte helfen Sie mir! Ich versuche, einen großen Teil der Daten aus einer JSON-Datei zu lesen, und der größte Teil der Daten ist eine Liste von Listen! Ich weiß nicht, wie man es entserialisiert!Unity Json De/Serialisierung verschachtelte Daten

So fand ich diese Anleitung und tat, wie ihm die JsonFX mit http://www.raybarrera.com/2014/05/18/json-deserialization-using-unity-and-jsonfx/

es hat mir geholfen, ich außer der Liste der Liste müssen alle anderen Informationen deserialisieren.

Das folgende ist ein Beispiel, wie die JSON-Datei aussehen kann, bedenken Sie, dass ich es zehn Falten vereinfacht habe, denn das ist ein riesiger Datensatz!

{ 
    "name": "Croissant", 
    "price": 60, 
    "foo": [{ 
      "poo": [1, 2] 
     }, 
     { 
      "poo": [3, 4] 
     } 
    ], 
    "importantdata": [ 
     [ 
      0, 
      1, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0 
     ], 
     [ 
      1, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0, 
      0 
     ] 
    ] 
} 

Wie kann ich dies in ein Objekt und erreichen die Daten, die ich wie diese myObject.importantdata[n] brauchen?

Wenn weitere Informationen benötigt werden, bin ich glücklich zu teilen, sorry Im neuen hier!

+0

Ihre JSON ist ungültig. Validieren Sie hier: https://jsonformatter.curiousconcept.com/ – Azeem

Antwort

1

In solchen Fällen ist es oft am besten, eine Website wie http://json2csharp.com/

Paste in Ihrem JSON zu verwenden, klicken Sie auf generieren und es wird Ihnen eine Liste von C# -Klassen geben, die an der Struktur Ihrer JSON entsprechen.

In diesem Fall gibt es mir

public class Foo 
{ 
    public List<int> poo { get; set; } 
} 

public class RootObject 
{ 
    public string name { get; set; } 
    public int price { get; set; } 
    public List<Foo> foo { get; set; } 
    public List<List<int>> importantdata { get; set; } 
} 

ich dann persönlich benutze NewtonSofts Json.net zu/von JSON wie diese zu konvertieren; http://www.newtonsoft.com/json

using Newtonsoft.Json; 


string json = File.ReadAllText("path\to\file.json"); 
RootObject myRootObject = JsonConvert.DeserializeObject<RootObject>(json); 
+1

Danke Kumpel! Ich dachte zuerst darüber nach, get und set-Methoden zu verwenden, aber lies auf uniondoc, dass jsonutility (was ich benutzte) es nicht unterstützt, also musste ich mich anpassen, aber das hat mir sehr geholfen, jetzt kann ich endlich erreichen, was ich beabsichtigt habe erreichen! newtonsoft hat mir gerade ein Leben gerettet –

0

Sie können die POCO-Klasse generieren Ihre Beispieldaten verwenden, versuchen http://json2csharp.com/, die ein Online-Tool ist. Visual Studio 2015 und VS-Code haben auch einen ähnlichen Menüpunkt/Befehl, um dies zu erreichen.

  • Fügen Sie den JSON-String dort
  • werden Sie alle POCO-Klassen erhalten Sie benötigen.

Die automatisch generierte Ergebnis für Ihren Fall ist:

public class Foo 
{ 
    public List<int> poo { get; set; } 
} 

public class RootObject 
{ 
    public string name { get; set; } 
    public int price { get; set; } 
    public List<Foo> foo { get; set; } 
    public List<List<int>> importantdata { get; set; } 
} 

VS Code-Beispiel: enter image description here

Visual Studio 2015 Beispiel: enter image description here

Verwandte Themen