gpt4 book ai didi

c# - Json .NET 序列化 - 更改属性值

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

美好的一天!

我目前通过以下代码使用 Newtonsoft Json Serializer:

        private string serializeAndIgnoreEmail(UserMembership obj)
{
var json = JsonConvert.SerializeObject(obj, Formatting.Indented,
new JsonSerializerSettings() { ContractResolver = new DocumentIdContractResolver() });
return json;
}
private class DocumentIdContractResolver : CamelCasePropertyNamesContractResolver
{
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
return base.GetSerializableMembers(objectType).Where(o => o.Name != "Email").ToList();
}
}

每次我需要序列化一个对象时,我都会调用“serializeAndIgnoreEmail”方法。我现在想用它的加密版本替换每个属性的内容,但我不知道在哪里执行此操作。

我的猜测是覆盖“DocumentIdContractResolver”中的一个方法,但是有太多的 CreateBlahBlahBlah 方法,我发现很难使用它们。

这是继续修改 ContractResolver 的正确方法还是我应该尝试其他方法?

谢谢!

最佳答案

调用 SerializeObject 会做两件事:根据您指定的对象创建一个 JSON 标记树,并将其序列化为包含 JSON 的字符串。

最好的办法是分别执行这两个步骤:首先要求 JSON.NET 为您提供 JSON 标记树,然后修改值,然后将它们序列化为 JSON。

从我的头顶看:

namespace JsonEncryptionTest
{
class Program
{
static void Main(string[] args)
{
var obj = new
{
To = "Some name",
Subject = "A Subject",
Content = "A content"
};

var jsonObject = JObject.FromObject(obj);

// modify the values. Just doing something here to amuse you.
var property = jsonObject.Property("Content");
var value = (string) property.Value;
property.Value = value.ToLower();

var json = jsonObject.ToString();

Console.WriteLine(json);
}
}
}

关于c# - Json .NET 序列化 - 更改属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124292/

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