
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:
1 2 3 4 | <code>[DataContract]
public class DataObject
{
}</code>
|
Nach dem Login kopieren
- Verwenden Sie das DataMember-Attribut, um den JSON-Eigenschaftsnamen anzugeben, der dem Objektfeld entspricht:
1 2 3 4 5 | <code>[DataMember(Name = "user_id" )]
public int UserId { get; set; }
[DataMember(Name = "detail_level" )]
public string DetailLevel { get; set; }</code>
|
Nach dem Login kopieren
Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <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);
Console.WriteLine(dataObject.DetailLevel);
}
}
}</code>
|
Nach dem Login kopieren
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!