Ist es möglich, ein Stück xml, csv, json (was auch immer es ist) zu deserialisieren, und nicht wissen, es ist Typ? Aber gib ein Objekt zurück (was letztendlich der richtige Typ ist)?Kein Typ vor dem Deserialisieren
Antwort
Ja, es ist möglich.
Die serialisierten XML/CSV/JSON-Daten müssen Bezeichner enthalten, damit der Deserializer wissen kann, welche Arten von Objekten erstellt werden sollen, da dies vorher nicht bekannt sein kann. Damit der Deserializer neue Objektinstanzen erstellen kann, wird normalerweise das FactoryMethod-Entwurfsmuster verwendet.
Die Deserialisierung ist schwieriger als die Serialisierung.
Nicht auf eine einfache Art und Weise. Sie müssten Logik schreiben, um die Daten zu analysieren und zu entscheiden, welchem Typ ihr Format am ähnlichsten ist.
Allgemein ja. Aber es hängt davon ab, welche Serialisierung Sie verwenden. Die serialisierten Daten müssen Metadaten über die Typen der serialisierten Objekte enthalten. Zum Beispiel unterstützt die XML-Serialisierung (System.Xml.Serialization) dieses Szenario nicht.
Es hängt von der Serialisierung ab.
Der BinarySerializer bettet Typinformationen in seinen Ausgabestream ein, also würde das, was Sie beschreiben, perfekt funktionieren. Sie erhalten ein Objekt, und Sie können sogar darüber nachdenken und es dann auf den richtigen Typ umwandeln.
XML-Serialisierung funktioniert nicht so, weshalb der XmlSerializer einen Typ in seinem Konstruktor fordert.
Am besten geht es Ihnen in einem Szenario, in dem die Daten einer begrenzten Anzahl von Typen angehören, die alle von einem Basistyp erben. Dann können Sie den Basistyp angeben (der mit den Attributen des bekannten Typs versehen ist, damit er alle anderen möglichen Typen kennt) und dann die Daten in den Standardbasistyp deserialisieren und dann untersuchen.
CSV und JSON sind noch schwieriger, da nicht viel Unterstützung für die Serialisierung in das Framework eingebaut wird.
- 1. Reinigen von JSON für XSS vor dem Deserialisieren
- 2. Const vor oder nach dem Typ?
- 3. Deserialisieren Variable Typ JSON-Array mit DataContractJsonSerializer
- 4. Deserialisieren abgeleiteten Typ DataContractSerializer verwenden, wenn abgeleiteten Typ wird vorher
- 5. Typ hat kein Mitglied
- 6. Kann dem Typ String kein Wert vom Typ [String] zugewiesen werden? mit dem Textlabel
- 7. Die EC2-Instanz wurde vor dem Start beendet. Kein Konsolenlog
- 8. kann kein Apostroph vor dem Jahr in NSDateFormatter setzen
- 9. Syntaxfehler: fehlende ';' vor 'Typ'
- 10. Deserialisieren von Guavas Tabelle mit Jackson-Würfen "JsonMappingException: Kein passender Konstruktor für Typ gefunden"
- 11. MySQL ändern Typ während Trigger vor dem Einfügen
- 12. QStringListIterator QStringList "kein Typ"?
- 13. Fehler: kein Typ mit dem Namen ‚Vektor‘ in Namespace ‚std‘
- 14. Unterschiedliche Antwort basierend auf dem verwendeten arithmetischen Typ (kein Überlauf)
- 15. Typ 'IArguments' ist kein Array-Typ
- 16. Typ '___' hat kein Mitglied 'Array'
- 17. XmlSerializer Mit deserialisieren komplexen Typ Elemente null sind
- 18. Parametric vor Ort abstrakten Typ
- 19. Wie aus dem JSON-Baum deserialisieren?
- 20. Wie jersonconvert newtonsoft deserialisieren?
- 21. Retain-Typ beim Deserialisieren aus Binärformaten wie CBOR
- 22. :: vor dem Hinzufügen von Inhalt oben statt vor dem Element
- 23. Fehlende ";" vor 'Namespace' und ';' vor dem 'Verwenden'
- 24. setInterval mit dem Wert vor dem letzten?
- 25. Canvas vor dem Rendern?
- 26. Formularüberprüfung vor dem Beitrag
- 27. Update vor dem Screenshot
- 28. '&' vor dem Parameternamen
- 29. Einheitstest vor dem Einchecken
- 30. Bildgröße vor dem Upload