Wie Deserialisieren von JSON-Objekten des richtigen Typs, ohne zu definieren, die Art vor der hand?

Habe ich gesucht, die ähnliche Fragen und konnte Sie nicht finden, etwas, das ganz abgestimmt, was ich suchte.

Neu in C# also Geduld mit mir, bitte.

Habe ich einige json-Dateien, die ich bin, zu Deserialisieren. Ich will die Dateien zu Deserialisieren von Objekten des richtigen Typs, ohne zu definieren, die Art vor der hand. Hier ist mein code:

public class loadJson
    {
        //path of the file location
        public void readJson(string path)
        {
            //array of files at the path location. right now just reading one file
            FileInfo[] files = new DirectoryInfo(path).GetFiles("seleniumExample.json").ToArray();

            foreach (FileInfo fi in files)
            {

                dynamic b1 = null;
                using (StreamReader file = new StreamReader(fi.FullName))
                {

                    string fileText = file.ReadToEnd();
                    //Console.WriteLine(fileText);

                    try
                    {
                        b1 = Newtonsoft.Json.JsonConvert.DeserializeObject(fileText);
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine("ERROR!!!! " + e.ToString());
                    }

                    file.Close();
                }
            }
        }
    }

Ich habe eine Reihe von Objekttypen, die ich in der Fütterung in meinem Programm über json-Dateien.

Möchte ich nicht explizit nennen b1 ist ein Gebot, oder ein Client, oder andere bestimmte vordefinierte Klasse. Wenn ich explizit aufrufen b1 ist ein Gebot, lädt er alle die info ganz gut und füllt die richtige Instanz-Variablen.

Aber wenn ich "dynamisch", oder allgemein "Objekt", es kann ' T es herausfinden und nur initialisiert, um ein "Objekt".

Gibt es eine Möglichkeit, um generische Deserialisierung und es haben, erstellen Sie ein Objekt der richtigen Klasse auf der Grundlage der definierten Felder in die json Datei?

Vielen Dank im Voraus für die Hilfe, und ich entschuldige mich, wenn meine Frage ist unglaublich unklar. Wenn dem so ist, bitte lass es mich wissen, wie kann ich helfen, klare jegliche Zweifel. Nochmals vielen Dank.

  • Is there a way to perform generic deserialization and have it create an object of the correct class based on the fields defined in the json file? Angenommen Json.Net erraten Sie die richtige Klasse und kehrte das Objekt. Wie würden Sie es in Ihrem code? Sie wissen immer noch nicht, die Art der b1 während dem schreiben des Codes.
  • So, mein denken ist: Statt zu schreiben, eine dieser readJson () - Methoden für jede Klasse, die werde ich potenziell feed in mein Programm als eine JSON-Datei, ich dachte, ich könnte einfach in eine generische Mode-und nicht wiederverwenden zu viel code. Macht das nicht Sinn? Wieder, ich bin neu in c# und software-Entwicklung im Allgemeinen, so bin ich offen für die Idee, dass dies vielleicht nicht der beste Weg zu gehen.
  • Sie haben die Möglichkeit, Einfluss auf das format & Inhalt der JSON-Dateien? Oder sind Sie einem bestimmten?
  • Ich habe die Fähigkeit, das format und die Inhalte.
  • Tun alle JSON-Dateien im Verzeichnis speichern Objekte gleichen Typs?
  • Nein. und das ist, warum ich wollen in der Lage sein zu Deserialisieren in einer generischen Weise.
  • Dann hat TypeNameHandling = TypeNameHandling.Auto Ihre Bedürfnisse zu erfüllen?

InformationsquelleAutor kdeez | 2015-04-17
Schreibe einen Kommentar