[英]Deserialize json with C# .NET Core
我试图以 JSON 格式反序列化我通过 POST 获得的数据,但有一些问题。
错误信息是:
序列化异常:期望 state '元素'..遇到名称为'',命名空间''的'文本'。 System.Runtime.Serialization.XmlObjectSerializerReadContext.HandleMemberNotFound(XmlReaderDelegator xmlReader,ExtensionDataObject extensionData,int memberIndex)
Controller 发生序列化:
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.takac@gmail.com"}
切换到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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.