gpt4 book ai didi

c# - 使用 JSON.NET 反序列化对象,但将一些属性放入类的成员中

转载 作者:行者123 更新时间:2023-11-30 21:58:00 25 4
gpt4 key购买 nike

我正在编写一组数据结构以使用 JSON.NET 将第三方 JSON 摄取到(不写出)中。

我有一个案例,将一些顶级 JSON 元素读入被反序列化到的对象的成员对象中。

我的 JSON:

{
"Id":1
"Checksum":42
"Name":"adam",
"Hair":true
}

我理想的对象结构:

public class EntityHeader
{
int Id { get; set; }

int Checksum { get; set; }
}

public class Entity
{
[HeroicJsonAttribute( "Id", "Checksum" )]
public EntityHeader Header { get; set; }

public string Name { get; set; }

public bool Hair { get; set; }
}

有没有简单的方法可以做到这一点?我会有很多类型需要这个,我不想为每个类型都写一个 JsonConverter。

这个问题之前有人问过,here ,但已接受的答案并未解决问题。

谢谢!

最佳答案

另一种方法是使用 Entity 类中的 EntityHeader 字段作为私有(private)属性的后备存储,私有(private)属性可以反序列化为:

public class EntityHeader
{
int Id { get; set; }

int Checksum { get; set; }
}

public class Entity
{
private EntityHeader m_Header = new EntityHeader();
public EntityHeader Header { get { return m_Header; } }

[JsonProperty]
private int Id { set { m_Header.Id = value; } }

[JsonProperty]
private int Checksum { set { m_Header.Checksum = value; } }

public string Name { get; set; }

public bool Hair { get; set; }
}

因此,JSON 中的所有属性都可以直接读入 Entity 对象,但 Entity 对象的消费者可以访问“封装良好”的 EntityHeader 属性。

我还没有测试过这个,它甚至可能有点笨拙,但它在技术上对我有用 (OP)。我仍然对其他答案感兴趣!

关于c# - 使用 JSON.NET 反序列化对象,但将一些属性放入类的成员中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336596/

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