Laden...

MultiArray aus JSON in ein Objekt Deserialisieren

Erstellt von UltraEdit vor 5 Jahren Letzter Beitrag vor 5 Jahren 874 Views
U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 5 Jahren
MultiArray aus JSON in ein Objekt Deserialisieren

Hallo Zusammen,
ich hätte gerne eine Frage:

Ich versuche ein JSON-GameSaveFile zu deserialisieren...
Soweit klappt schon alles, ABER, bei einer Struktur habe ich ein VerständnisProblem:

Folgende 2 Struktur-Teile(Arrays?):
(Bei dem 1. klappt es, das 2. verstehe ich leider nicht!)


    "aHM": [
      [ 119000.0, 14000.0, 45000.0 ],
      [ 343000.0, 127000.0, -360000.0 ],
      ...
    ],
    "?=a": [
      [ true, "0x7DCF24586AD976E1" ],
      [ true, "0x163C931B5718FDDB" ],
      ...
    ],

Das 1. Array kann ich problemlos deserialisieren mit:


        [JsonProperty("aHM")]
        public double[][] PlanetPositions { get; set; }

(Ausgabe siehe Screenshot...)

Das 2. Array verstehe ich nicht:
(ich versuche es wie folgt:)


        [JsonProperty("?=a")]
        public SystemSeed[][] PlanetSeeds { get; set; }

(Ausgabe siehe Screenshot...)

SystemSeed löse ich wie folgt auf:


    public class SystemSeed
    {
        public bool? Bool;
        public string String;

        public static implicit operator SystemSeed(bool Bool) => new SystemSeed { Bool = Bool };
        public static implicit operator SystemSeed(string String) => new SystemSeed { String = String };
    }

(Der Code ist geklaut und ich verstehe ihn auch nicht.)

Das Problem: Das Array wird DOPPELT aufgelöst.
(Ausgabe siehe Screenshot...)

Bei diesem Array fehlen ja die Bezeichner...


[ true, "0x7DCF24586AD976E1" ]

WAS muss tun um soetwas aufzulösen?

Vielen Dank im Voraus...
UltraEdit

P
441 Beiträge seit 2014
vor 5 Jahren

Das liegt daran, dass "?=a" ein Array von Arrays mit unterschiedlichen Typen ist, du aber ein Array of SystemSeed daraus machen willst.
Entweder, du gehst da in mehreren Schritten heran (z.B. erst in ein Array deserialisieren und dann in ein Objekt verwandeln) oder schaust dir die JsonConverter von JSON.NET an.