Heim Backend-Entwicklung C#.Net-Tutorial Wie kann das Problem des Fehlers bei der Deserialisierung von Attributwerten gelöst werden?

Wie kann das Problem des Fehlers bei der Deserialisierung von Attributwerten gelöst werden?

Jun 23, 2017 pm 04:22 PM
javascript json 字符串 对象 序列

Einführung: Als ich die Webapi-Schnittstelle entwickelte, stieß ich auf Folgendes: Wenn eine komplexe JSON-Zeichenfolge in ein Objekt deserialisiert wird, kann eines der Attributobjekte nicht serialisiert werden?

Verwendung:

InternalRecommendRequestFormModel formData = Newtonsoft.Json.JsonConvert.DeserializeObject<InternalRecommendRequestFormModel>(dataInput);
Nach dem Login kopieren

Darunter: InternalRecommendRequestFormModel ist ein komplexes Objekt, und seine Eigenschaften enthalten andere Objekte und Eigenschaften. dataInput ist die von der Schnittstelle übergebene JSON-Zeichenfolge, bei der es sich um das von einer anderen Schnittstelle zurückgegebene InternalRecommendRequestFormModel-Objekt handelt. Natürlich haben sich einige Eigenschaften der Daten während des Übertragungsprozesses geändert. Sie sollten jedoch deserialisiert werden, wenn sie verwendet werden Es wird ein Fehler gemeldet und eines der Attribute kann nicht serialisiert werden.

Was sollen wir also tun, wenn wir auf eine solch komplexe Deserialisierung in Objekte stoßen?

Zuallererst: Die Analyse zeigt, dass der Fehler durch den Serialisierungsfehler einzelner Attribute verursacht wird. Solange diese Attribute gelöscht oder der serialisierte Inhalt des Attributs entfernt werden können, ist alles in Ordnung.

Also: Wie entferne ich einige Attribute aus der serialisierten JSON-Zeichenfolge?

Das erste, woran wir denken, ist das Ersetzen von Saiten, das Löschen, das Abfangen usw., aber es ist leicht, Fehler zu machen. Können wir diese Zeichenfolge in ein funktionsfähiges Objekt umwandeln (natürlich nicht InternalRecommendRequestFormModel), dann ein Objekt töten oder löschen und es dann in das gewünschte Objekt konvertieren? Als ich zum ersten Mal über ein Objekt nachdachte: Ist eigentlich nicht jedes Objekt ein Objekt?

Beginnen Sie mit dem Versuch:

object formData = Newtonsoft.Json.JsonConvert.DeserializeObject<object>(dataInput);
Nach dem Login kopieren

Das erhaltene Objekt ist wie folgt:

Beim Debuggen entdeckt:

((Newtonsoft.Json.Linq.JObject)(JsonConvert.DeserializeObject(dataInput))).ChildrenTokens[46], ich kann den Attributwert abrufen.

Mit anderen Worten, wie aus dem obigen Code ersichtlich ist, wird das deserialisierte Objektobjekt in Folgendes konvertiert: Newtonsoft.Json.Linq.JObject-Objekt. Dieses Objekt ist eine Basisklasse des von Microsoft bereitgestellten JSON-Objekts. Das heißt, solange Sie ein Objekt sind und es von JSON serialisiert wird, kann es Ihnen dabei helfen, es wieder zu deserialisieren.

Der Code wurde verbessert zu:

InternalRecommendRequestFormModel formData = new InternalRecommendRequestFormModel();Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);
obj.Remove("opinions");
formData = obj.ToObject<InternalRecommendRequestFormModel>();
Nach dem Login kopieren

Zusammenfassung:

Solange die JSON-Zeichenfolge ein Objekt ist und wir direkt deserialisieren und feststellen, dass einige Attributwerte in der Zeichenfolge nicht den Anforderungen entsprechen, können wir das Objekt zunächst in JObject konvertieren und die Objektattribute korrigieren , und verwenden Sie dann JObject, um ToObject() bereitzustellen und es dann in das Objekt zu konvertieren, das konvertiert werden muss

<strong><span style="font-size: 15px">Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(dataInput);</span></strong><br>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann das Problem des Fehlers bei der Deserialisierung von Attributwerten gelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON May 04, 2024 pm 06:15 PM

Zu den Leistungsoptimierungsmethoden für die Konvertierung von PHP-Arrays in JSON gehören: Verwendung von JSON-Erweiterungen und der Funktion json_encode(); Verwendung von Puffern zur Verbesserung der Leistung der Schleifencodierung; JSON-Codierungsbibliothek.

Detaillierte Erläuterung der Methode zum Konvertieren des Typs „int' in „string' in PHP Detaillierte Erläuterung der Methode zum Konvertieren des Typs „int' in „string' in PHP Mar 26, 2024 am 11:45 AM

Ausführliche Erläuterung der Methode zum Konvertieren des Typs int in einen String in PHP. Bei der PHP-Entwicklung stoßen wir häufig auf die Notwendigkeit, den Typ int in einen String-Typ zu konvertieren. Diese Konvertierung kann auf verschiedene Weise erreicht werden. In diesem Artikel werden verschiedene gängige Methoden im Detail vorgestellt, mit spezifischen Codebeispielen, um den Lesern das Verständnis zu erleichtern. 1. Verwenden Sie die integrierte Funktion strval() von PHP. PHP bietet eine integrierte Funktion strval(), die Variablen verschiedener Typen in String-Typen konvertieren kann. Wenn wir den Typ int in den Typ string konvertieren müssen,

So wiederholen Sie eine Zeichenfolge in Python_Tutorial zum Wiederholen von Zeichenfolgen in Python So wiederholen Sie eine Zeichenfolge in Python_Tutorial zum Wiederholen von Zeichenfolgen in Python Apr 02, 2024 pm 03:58 PM

1. Öffnen Sie zuerst Pycharm und rufen Sie die Pycharm-Homepage auf. 2. Erstellen Sie dann ein neues Python-Skript, klicken Sie mit der rechten Maustaste – klicken Sie auf „Neu“ – klicken Sie auf „Pythondatei“. 3. Geben Sie eine Zeichenfolge ein, Code: s="-". 4. Dann müssen Sie die Symbole in der Zeichenfolge 20 Mal wiederholen, Code: s1=s*20 5. Geben Sie den Druckausgabecode ein, Code: print(s1). 6. Führen Sie abschließend das Skript aus und Sie sehen unten unseren Rückgabewert: - 20 Mal wiederholt.

Wie konvertiere ich ein MySQL-Abfrageergebnisarray in ein Objekt? Wie konvertiere ich ein MySQL-Abfrageergebnisarray in ein Objekt? Apr 29, 2024 pm 01:09 PM

So konvertieren Sie ein MySQL-Abfrageergebnis-Array in ein Objekt: Erstellen Sie ein leeres Objekt-Array. Durchlaufen Sie das resultierende Array und erstellen Sie für jede Zeile ein neues Objekt. Verwenden Sie eine foreach-Schleife, um die Schlüssel-Wert-Paare jeder Zeile den entsprechenden Eigenschaften des neuen Objekts zuzuweisen. Fügt dem Objektarray ein neues Objekt hinzu. Schließen Sie die Datenbankverbindung.

Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? May 06, 2024 pm 10:09 PM

Anmerkungen in der Jackson-Bibliothek steuern die JSON-Serialisierung und -Deserialisierung: Serialisierung: @JsonIgnore: Ignorieren Sie die Eigenschaft @JsonProperty: Geben Sie den Namen an @JsonGetter: Verwenden Sie die get-Methode @JsonSetter: Verwenden Sie die set-Methode Deserialisierung: @JsonIgnoreProperties: Ignorieren Sie die Eigenschaft @ JsonProperty: Geben Sie den Namen @JsonCreator an: Verwenden Sie den Konstruktor @JsonDeserialize: Benutzerdefinierte Logik

Was ist der Unterschied zwischen Arrays und Objekten in PHP? Was ist der Unterschied zwischen Arrays und Objekten in PHP? Apr 29, 2024 pm 02:39 PM

In PHP ist ein Array eine geordnete Sequenz, und auf Elemente wird über einen Index zugegriffen. Ein Objekt ist eine Entität mit Eigenschaften und Methoden, die über das Schlüsselwort new erstellt werden. Der Array-Zugriff erfolgt über einen Index, der Objektzugriff über Eigenschaften/Methoden. Es werden Array-Werte und Objektreferenzen übergeben.

PHP-String-Manipulation: eine praktische Möglichkeit, Leerzeichen effektiv zu entfernen PHP-String-Manipulation: eine praktische Möglichkeit, Leerzeichen effektiv zu entfernen Mar 24, 2024 am 11:45 AM

PHP-String-Operation: Eine praktische Methode zum effektiven Entfernen von Leerzeichen Bei der PHP-Entwicklung kommt es häufig vor, dass Sie Leerzeichen aus einem String entfernen müssen. Das Entfernen von Leerzeichen kann die Zeichenfolge sauberer machen und die nachfolgende Datenverarbeitung und -anzeige erleichtern. In diesem Artikel werden mehrere effektive und praktische Methoden zum Entfernen von Leerzeichen vorgestellt und spezifische Codebeispiele angehängt. Methode 1: Verwenden Sie die in PHP integrierte Funktion trim(). Die in PHP integrierte Funktion trim() kann Leerzeichen an beiden Enden der Zeichenfolge entfernen (einschließlich Leerzeichen, Tabulatoren, Zeilenumbrüche usw.), was sehr praktisch und einfach ist benutzen.

PHP-String-Operation: Tipps zur Implementierung zusätzlicher Kommas und Beibehaltung nur von Kommas PHP-String-Operation: Tipps zur Implementierung zusätzlicher Kommas und Beibehaltung nur von Kommas Mar 28, 2024 pm 03:02 PM

PHP-String-Operation: Entfernen Sie zusätzliche Kommas und behalten Sie nur Kommas bei. Implementierungstipps In der PHP-Entwicklung ist die String-Verarbeitung eine sehr häufige Anforderung. Manchmal müssen wir die Zeichenfolge verarbeiten, um zusätzliche Kommas zu entfernen und die einzigen Kommas beizubehalten. In diesem Artikel stelle ich eine Implementierungstechnik vor und stelle konkrete Codebeispiele bereit. Schauen wir uns zunächst eine allgemeine Anforderung an: Angenommen, wir haben eine Zeichenfolge, die mehrere Kommas enthält, und wir müssen die zusätzlichen Kommas entfernen und nur das eindeutige Komma beibehalten. Ersetzen Sie beispielsweise „apple,ba

See all articles