Json Deserialisieren mit C# .NET Core
Ich versuche zu Deserialisieren von Daten, die Ich habe über POST im JSON-format, aber mit einigen problem.
Ist die Fehlermeldung:
SerializationException: Erwarte Staat 'Element'.. Begegnet 'Text' mit dem Namen " namespace ".
System.- Laufzeit.Serialisierung.XmlObjectSerializerReadContext.HandleMemberNotFound(XmlReaderDelegator xmlReader, ExtensionDataObject extensionData, int memberIndex)
Controller, wo die Serialisierung geschieht:
public String RequestToken(string userData)
{
Contract.Ensures(Contract.Result<string>() != null);
UserModel deserializedUser = new UserModel();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(userData));
ms.Position = 0;
DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType());
deserializedUser = ser.ReadObject(ms) as UserModel;
}
UserModel, die als ein Vertrag:
using System;
using System.Runtime.Serialization;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace WishareIntegrationApi.Entities
{
[DataContract]
public class UserModel
{
[BsonId]
[BsonRepresentation(BsonType.String)]
[DataMember]
public ObjectId _id { get; set; }
[DataMember]
public string displayName { get; set; }
[DataMember]
public string photoURL { get; set; }
[DataMember]
public string email { get; set; }
[DataMember]
public int registeredAt { get; set; }
}
}
Und ein Beispiel JSON-ich werde senden über post:
{"_id":"8kmXH1fzSrVS8PqNLMwyhRH4hBw1","displayName":"Michal Takáč","photoURL":"https://lh3.googleusercontent.com/-xa5oE48RffQ/AAAAAAAAAAI/AAAAAAAACDE/OLrtV5-VIvw/photo.jpg","email":"[email protected]"}
"System.Runtime.Serialization.Xml"... in der Fehlermeldung. Hmm. Überprüfen Sie Ihre Standard-serializer.
Warum benutzt du die veraltete DataContractJsonSerializer? .NETZ selbst nutzt JSON.NET in ASP.NET Web-API. .NET-Kern verwendet Json.NET sowohl in sowohl in ASP.NET MVC und Web API. Durch die Verwendung DataContractJsonSerializer Sie die Einführung einer Abhängigkeit von einem legacy-Klasse
Mir ist auch aufgefallen das eine, aber ich bin völlig neu auf .NET. Können Sie näher auf, dass Standard-serializer-Ding?
vergessen Sie Standard-serialisierungsprogramme und verwenden JSON.NET. Eine einfache JSonConvert.DeserializeObject<UserModel>(userData)` ist genug
Ich wechselte zu JSON.NET und es funktioniert gut. Danke für die Hilfe 🙂
Warum benutzt du die veraltete DataContractJsonSerializer? .NETZ selbst nutzt JSON.NET in ASP.NET Web-API. .NET-Kern verwendet Json.NET sowohl in sowohl in ASP.NET MVC und Web API. Durch die Verwendung DataContractJsonSerializer Sie die Einführung einer Abhängigkeit von einem legacy-Klasse
Mir ist auch aufgefallen das eine, aber ich bin völlig neu auf .NET. Können Sie näher auf, dass Standard-serializer-Ding?
vergessen Sie Standard-serialisierungsprogramme und verwenden JSON.NET. Eine einfache JSonConvert.DeserializeObject<UserModel>(userData)` ist genug
Ich wechselte zu JSON.NET und es funktioniert gut. Danke für die Hilfe 🙂
InformationsquelleAutor Michal Takáč | 2018-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wechseln JSON.Net.
JSON-Serialisierung-APIs sind nicht Teil der .Net core und ich weiß nicht erwarten, dass Sie den port, über. Wenn Sie verwendet Klassen aus den namespaces wie
System.Web.Script.Serialization
Wechsel der Serialisierung, insbesondere Microsfot-frameworks basiert .Net core verwenden JSON.Net serialisierungsprogramme.Wie bereits von vielen Usern in den Kommentaren, ich habe gewechselt von der alten Weise zu tun, Serialisierung/Deserialisierung mit Verträgen zu JSON.NET
Ist hier die richtige Lösung für die Steuerung
InformationsquelleAutor Michal Takáč