gpt4 book ai didi

c# - 使用子类反序列化 JSON 数据

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

这个问题我问了自己很多次,也想不出答案。
假设有某种仓库管理软件将所有保存的产品输出为 json 文件。产品可以以一般形式或更具体的形式保存。
例如有两种产品:

General product: { "pid": 12345, "name": "SomeGeneralProduct" }
Special product: { "pid": 67890, "name": "SpecialProduct", "color": "green" }

可能会有更多变体,但都具有共同的 pidname
现在我想解析和分析我作为 json 文件获得的一大堆产品。
我可以创建一个 Product 类,其中包含一个产品可能拥有的所有可能成员,但我认为这是浪费时间/可维护性,可以用更面向对象的方式解决。唯一的问题是到目前为止我找不到关于这个主题的任何信息。

最后我真正想要的是这样的:

class BaseClass
{
public int Pid { get; set; }
public string Name { get; set; }
}

class DerivedClass : BaseClass
{
public string Color { get; set; }
}

string jsonProducts = "JSON-DATA-OF-PRODUCTS";
List<BaseClass> products = SomeDeserializer.Deserialize(jsonProducts);

(注意:我知道我想要的示例太简单了,但我只是想明确表示,如果可能的话,我不想在主代码中包含大量的 if/else 或开关)

如果可能,我想知道如何解决这个问题?
是否有任何图书馆可以处理这个问题,或者什么是解决这个问题的好方法?

最佳答案

Json .Net 应该适合你。

如上所述,您可以使用方法 JsonConvert.DeserializeObject()

只需设置设置 var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };

然后像这样反序列化:

List<Product> pList = JsonConvert.DeserializeObject<List<Product>>(jsonString, settings);

关于c# - 使用子类反序列化 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31956979/

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