gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:11:51 25 4
gpt4 key购买 nike

我正在尝试反序列化我通过 POST 以 JSON 格式获得的数据,但遇到了一些问题。

错误信息是:

SerializationException: Expecting state 'Element'.. Encountered 'Text' with name '', namespace ''. 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;
}

用作契约(Contract)的 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 序列化程序。

正如许多用户在评论中提到的,我已经从使用契约(Contract)进行序列化/反序列化的旧方法切换到 JSON.NET

这是 Controller 的正确解决方案

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

关于c# - 使用 C# .NET Core 反序列化 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com