使用C#.NET Core反序列化json

米哈尔·塔卡奇(MichalTakáč)

我试图反序列化我已经通过JSON格式通过POST获得的数据,但是存在一些问题。

错误消息是:

SerializationException:预期状态为“元素”。遇到名称为“名称空间”的“文本”。System.Runtime.Serialization.XmlObjectSerializerReadContext.HandleMemberNotFound(XmlReaderDelegator xmlReader,ExtensionDataObject extensionData,int memberIndex)

发生序列化的控制器:

    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:

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; }
    }
}

我通过帖子发送的示例JSON:

{"_id":"8kmXH1fzSrVS8PqNLMwyhRH4hBw1","displayName":"Michal Takáč","photoURL":"https://lh3.googleusercontent.com/-xa5oE48RffQ/AAAAAAAAAAI/AAAAAAAACDE/OLrtV5-VIvw/photo.jpg","email":"[email protected]"}
米哈尔·塔卡奇(MichalTakáč)

切换到JSON.Net。

JSON序列化API不是.Net核心的一部分,我不希望它们将其移植过来。如果您使用了从诸如System.Web.Script.Serialization切换到其他序列化之类的命名空间的类,则特别是基于.Net核心的Microsfot框架将使用JSON.Net序列化器。

正如许多用户在评论中提到的那样,我已经从使用合同进行序列化/反序列化的旧方法转换为JSON.NET。

这是控制器的正确解决方案

public async Task<String> RequestToken(string userData)
{
     var user = JsonConvert.DeserializeObject<UserModel>(userData);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用JSON.Net反序列化器反序列化动态JSON

使用字符串,int数组反序列化JSON-.net Core C#

Json.Net序列化/反序列化类名称属性C#

Json反序列化错误,问题C#.Net Core

无法使用 .NET Core 反序列化 JSON 字符串

使用 ASP.NET Core 反序列化多维 JSON 数组

使用json.net反序列化JSON

JSON.NET:使用LINQ从JSON反序列化

使用JSON.NET反序列化JSON数据

使用 json.net/RestSharp 在 C# 中使用元数据反序列化 JSON

如何在C#中使用json.net忽略序列化的属性,但保留反序列化

使用带有JSON.NET C#的内部类的json文件反序列化

在C#中使用Newtonsoft Json.NET反序列化JSON

如何使用JSON.net C#反序列化复杂的JSON

在C#中使用json.net反序列化Json var

使用JSON.net反序列化对象

使用 json .net 反序列化数组数组

使用JSON.net动态反序列化

使用JSON.net反序列化

如何使用 Autodesk PLM 中的 C# 反序列化 JSON.NET 文本

C#使用JSON.NET反序列化Dictionary <(Enum,Enum),string>

C#JSON.net无法从文件反序列化和重新序列化对象

使用JSON.NET序列化/反序列化动态属性名称

使属性反序列化但不使用json.net序列化

使用Json.NET对混合类型的数组进行序列化/反序列化

使用json.net对对象属性进行条件序列化/反序列化

使用 JSON.NET 反序列化和序列化字典<string, object>

使用JSON.NET反序列化JSON-无法反序列化,因为该类型需要JSON数组C#

JSON使用.NET DataContractJsonSerializer序列化器与字典进行序列化/反序列化