


Wie ordne ich JSON-Feldnamen mithilfe von JavaScriptSerializer (oder Alternativen) .NET-Objekteigenschaften zu?
JavaScriptSerializer.Deserialize verwenden: JSON-Feldnamen den .NET-Objekteigenschaften zuordnen
Frage:
Wie ordne ich Feldnamen in JSON-Daten den Feldnamen eines .NET-Objekts zu, wenn ich JavaScriptSerializer.Deserialize verwende?
Antwort:
Die JavaScriptSerializer-Klasse bietet keine direkte Feldnamenzuordnungsfunktion. Sie können für diesen Zweck jedoch die flexiblere DataContractJsonSerializer-Klasse nutzen.
Um Feldnamen zuzuordnen:
- Fügen Sie das DataContract-Attribut zu Ihrer Datenobjektklasse hinzu:
<code>[DataContract] public class DataObject { }</code>
- Verwenden Sie das DataMember-Attribut, um den JSON-Eigenschaftsnamen anzugeben, der dem Objektfeld entspricht:
<code>[DataMember(Name = "user_id")] public int UserId { get; set; } [DataMember(Name = "detail_level")] public string DetailLevel { get; set; }</code>
Beispiel:
<code>using System.Runtime.Serialization.Json; public class Test { public static void Main() { string json = "{\"user_id\":1234, \"detail_level\":\"low\"}"; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json))) { DataObject dataObject = serializer.ReadObject(ms) as DataObject; Console.WriteLine(dataObject.UserId); // 输出:1234 Console.WriteLine(dataObject.DetailLevel); // 输出:low } } }</code>
Hinweis:
- Wenn Sie das DetailLevel-Feld als Aufzählung beibehalten möchten, können Sie einen benutzerdefinierten JSON-Konverter verwenden, um die Konvertierung zwischen Zeichenfolgen- und Aufzählungswerten durchzuführen.
- DataContractJsonSerializer unterstützt auch die Feldnamenzuordnung in Silverlight.
Das obige ist der detaillierte Inhalt vonWie ordne ich JSON-Feldnamen mithilfe von JavaScriptSerializer (oder Alternativen) .NET-Objekteigenschaften zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



C 20CoroutinesArefunctionsThatCansuspendandResumexexexexusingco_Await, Co_yield, orco_return, Aktivierung von Tausend -LazyValuation;

UseraIitotiereSourcemanagementtoobjectLifetimes, sicherstellen, dass CleanUpviadestructorsDackunwinding.2.imforstrongorno-Throwexceptionsafetyguarantees, vermeiden Sie TheBasicornoguaranteeeeewhenpossible.3.Applythecopy-und-SwapidiomtoachevetheSonteguantejantejeseyper

Um eine Schnur in Großbuchstaben oder Kleinbuchstaben umzuwandeln, verwenden Sie die STD :: Transformation in Kombination mit :: toupper oder :: tolower -Funktionen. 1. Header -Dateien einschließen und; 2. Rufen Sie STD :: Transformation an, übergeben Sie den Start- und End -Iterator der Zeichenfolge und geben Sie den Ausgabe -Iterator an str.begin () an, um ihn an Ort und Stelle zu ändern. 3. Verwenden Sie :: Toupper, um jedes Zeichen in Großbuchstaben zu konvertieren, oder verwenden Sie :: Tolower in Kleinbuchstaben. Diese Methode ist für ASCII -Zeichenfolgen geeignet und der Code ist einfach und effizient. Für Nicht-ASCII- oder Unicode-Text sollten Bibliotheken wie die Intensivstation verwendet werden, um eine ordnungsgemäße Verarbeitung sicherzustellen. Obwohl der manuelle Zyklus sehr lesbar ist, ist er weniger effizient. Daher wird empfohlen, STD zu verwenden ::

InLineNameSpace wird hauptsächlich für die Versionskontrolle und das symboltransparente Exposition verwendet, und auf seine Mitglieder können vom äußeren Namespace direkt zugegriffen werden. ① Der Name in InLeNAMePace wird als direktes Mitglied des äußeren Namespace angesehen und kann verwendet werden, ohne den inneren Namespace anzugeben. ② Es wird üblicherweise für die Bibliotheksversionsverwaltung verwendet. Wenn V1 auf Inline eingestellt ist und während des Upgrades in V2 geändert wird, kann die alte Version weiterhin über einen expliziten Namespace zugegriffen werden. ③ Unterstützung des ABI-Kompatibilitätsdesigns, der neue Versionstyp ist standardmäßig freigelegt und die alte binäre Schnittstelle wird in nicht-inline-Namespaces beibehalten. ④ kann verschachtelt werden und mehrere Existenzwerte, aber normalerweise wird nur einer als Standard erweitert. ⑤ Beachten Sie, dass ein äußerer Namespace nur einen Standard -Inline -Subnamespace haben kann, und Benutzer sollten vermieden werden

Um C -Funktionen in C aufzurufen, müssen Sie externe "C" verwenden, um die Änderung der Namensänderung zu verhindern. Die spezifischen Schritte sind: 1. Schreiben Sie die C -Funktionsheader -Datei Hello.h und wickeln extern mit #ifdef__cplusplus, um die Kompatibilität zu gewährleisten. 2. Implementieren Sie die C -Funktion say_hello () und fügen Sie die Header -Datei in das Hauptprogramm Main.cpp von C ein; 3.. Verwenden Sie G, um die C -Datei zu kompilieren und die C -Zieldatei zu verknüpfen oder den Link direkt zu kompilieren. V. Der gesamte Prozess muss sicherstellen, dass die Erklärung und die Kompilierungsmethode korrekt sind, und das Programm kann normal ausgeführt und ausgeben.

STD :: Funktion und STD :: BIND sind Tools, die in C zur Verarbeitung von Callable -Objekten verwendet werden. STD :: Funktion kann jedes aufrufbare Objekt mit kompatiblen Signaturen einwickeln. Es ist für Rückrufe, Ereignissysteme und andere Szenarien geeignet. Es unterstützt Funktionen, Lambdas, Funktionen und Mitgliederfunktionen. STD :: BIND kann einige Parameter der Funktion beheben, um neue aufrufbare Objekte zu generieren, die häufig für die Parameterbindung und -umordnung verwendet werden. Da C 11 Lambda jedoch eher empfohlen wird, da sie klarer und effizienter ist. Bei der Verwendung müssen Sie Header -Dateien einfügen. Beachten Sie, dass STD :: Funktion Type löscht, die über ihnen löschen. STD :: Bind kann eine unerwartete Replikation von mobilen Exklusivtypen verursachen. Daher wird empfohlen, zuerst Lambda zu verwenden, nur in Komplex

Durch die Verwendung von C STL -Algorithmus kann der Code prägnanter, sicher und effizienter werden. Die Antwort besteht darin, Dateien und Iteratoren zu beinhalten und zu verwenden, um Container zu bedienen. Algorithmen wie STD :: Find, Std :: Sort, Std :: Transformation, std :: akkumuliert usw. können effektiv verwendet werden, kombiniert mit Idiomen wie Lambda-Ausdrücken und Löschen-Remove, um die Codequalität zu verbessern und Fehler zu reduzieren und die moderne C-Programmierung letztendlich zu realisieren.

Der benutzerdefinierte Allocator kann verwendet werden, um das Speicherzuweisungsverhalten von C -Containern zu steuern. 1. Der Loggingallocator im Beispiel implementiert die Speicherbetriebsprotokollierung durch Überlastung, Zuordnung, Deallocation, Konstruktion und Zerstörung von Methoden; 2. Der Allocator muss Value_Type und Wiederherstellungsvorlagen definieren, um die Umwandlungsanforderungen des STL -Containertyps zu erfüllen. 3. Die Allokatorin löst die Protokollausgabe während der Konstruktion und Kopie aus, was für die Verfolgung des Lebenszyklus geeignet ist. 4. Die tatsächlichen Anwendungen umfassen Speicherpools, gemeinsamer Speicher, Debugging -Tools und eingebettete Systeme. 5. Seit c 17 kann konstruieren und zerstören können standardmäßig von std :: allocator_traits verarbeitet werden
