gpt4 book ai didi

C# JSON - 具有相同属性的不同类型的多个对象的序列化

转载 作者:行者123 更新时间:2023-12-04 08:13:29 26 4
gpt4 key购买 nike

我已经使用了很多 JSON 序列化,但是遇到了一个场景(我以前没有遇到过),其中我有一个对象,该对象可以包含任意数量的具有相同属性的类似对象。例如

{
"Objects": {
"ObjectA": {
"prop1": 6601,
"prop2": "Prop",
"propParams": [
{
"Type": 0,
"Name": "name"
}
]
},
"ObjectB ": {
"prop1": 6601,
"prop2": "Prop",
"propParams": []
}
}
}
不幸的是,它不是对象列表/数组。这是我的问题之一。
所以我有一些事情可以使用一些帮助、建议、指导等。
关于如何处理它们。
我觉得我应该从 Objects 中的对象开始第一的。如您所见,它们属于不同的类型,但包含相同的属性,这适用于此 Objects 中的任何对象。类(class)。有没有办法获取一个对象并将其“转换”为 Standard对象,只要它包含适当的属性?我在想一些关于 JsonConvert 的事情。也许将对象类型作为“标准”对象的字符串属性。
第二,有没有办法在 Objects 中制作对象到数组/列表而不管其对象类型?我知道这可能必须先完成,但按我所做的顺序询问是有意义的。
我目前正在网上搜索任何其他帮助,但我想我会在这里问。

最佳答案

Objects应该被视为 Dictionary<string, Standard> .
例如,这个 LINQPad 查询:

void Main()
{
JsonConvert.DeserializeObject<Payload>(@"{
""Objects"": {
""ObjectA"": {
""prop1"": 6601,
""prop2"": ""Prop"",
""propParams"": [
{
""Type"": 0,
""Name"": ""name""
}
]
},
""ObjectB "": {
""prop1"": 6601,
""prop2"": ""Prop"",
""propParams"": []
}
}
}").Dump();
}

public class Payload
{
public Dictionary<string, Standard> Objects{get;set;}
}

public class Standard
{
public int Prop1{get;set;}
public string Prop2{get;set;}
public List<Dictionary<string, object>> PropParams{get;set;}
}
会产生这样的结果:
enter image description here

关于C# JSON - 具有相同属性的不同类型的多个对象的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65832400/

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