gpt4 book ai didi

c# - 序列化 - C# 数据类型

转载 作者:行者123 更新时间:2023-11-30 23:05:18 24 4
gpt4 key购买 nike

我有一个我希望序列化为 JSON 的对象,但我宁愿让每个属性都有其关联的类型,而不是每个属性都有其关联的值。

例如,我有以下类(class):

public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime? DateOfBirth { get; set; }
public bool IsMarried { get; set; }
}

我想要的结果 JSON 看起来像这样

{
"Student:" {
"Name": "String",
"Age": "Int",
"DateOfBirth": "DateTime",
"IsMarried": "Boolean"
}
}

有没有一种方法可以设置一个 JsonSerializer 来序列化每个属性的 type 而不是它的 value

最佳答案

使用来自 this 的信息answer构建一个自定义的JsonSerializer,可以修改WriteJson方法来指定要写入的信息。

构建自定义 JsonSerializer 需要创建一个新类并从 JsonSerializer 派生它,然后覆盖您有兴趣自定义的任何方法。

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value == null)
{
serializer.Serialize(writer, null);
return;
}

var properties = value.GetType().GetProperties();

writer.WriteStartObject();

foreach (var property in properties)
{
// Write the property name
writer.WritePropertyName(property.Name);
// Get the value of the property and get the type
serializer.Serialize(writer, property.GetValue(value, null).GetType());
}

writer.WriteEndObject();
}

关于c# - 序列化 - C# 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48909428/

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