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 🙂

InformationsquelleAutor Michal Takáč | 2018-01-03

Schreibe einen Kommentar