c# - json.net 反序列化未知类型,直到反序列化其父级?

标签 c# json deserialization

所以我使用 json.net 反序列化来自互联网的一些数据。提供数据的笨蛋让我很为难。我尝试反序列化的对象的一个​​属性的数据类型根据对象中另一个属性的内容而变化,如下所示:

{ “类型指示器”:“A”, "object_I_Need": { ...针对对象类型 A 进行格式化 ... } }

或者

{ “类型指示器”:“B”, "object_I_Need": { ...针对对象类型 B 进行格式化 ... } }

我需要“object_I_Need”,无论它是类型 A 还是 B,并且我都有这两种类型的架构。

我不需要在解串器中完全解决这个问题。我只是 JsonExtensionDataAttribute 来检查未知字段,所以我想知道是否可以让 object_I_Need 落入其中,然后单独反序列化......有没有办法做到这一点?

我有什么选择?我想我可以将整个东西反序列化为动态对象,决定 object_I_Need 是什么类型并再次序列化它?但我希望有更好的方法。感谢建议。

谢谢, 崩溃

最佳答案

您可以使用 Newtonsoft 反序列化为动态对象,然后从那里构建对象。

var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);

var myObject = new O();
if (dyn.typeindicator.Value == "A") {
    myObject.PropA = dyn.object_I_Need.AAAA.Value;
}
else
{
    myObject.PropA = dyn.object_I_Need.anotherA.Value;
}

关于c# - json.net 反序列化未知类型,直到反序列化其父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192913/

相关文章:

c# - Windows Mobile 本地数据库

c# - 需要C#源码关系图

json - BigQuery 中的 Cloud Datastore 备份问题

c# - System.Text.Json 不能用对象数组反序列化一个对象?

java - Jackson:将 XML 中的自定义属性反序列化为 POJO

json - Freddy JSON - 将集合复制到新数组中

c# - 从浏览器可见的 asp.net 代码隐藏?

c# - 如何从 wpf 中的 DataGridCellinfo 类中提取 DataGridCell

python - 在python中将一个json字典添加到另一个json字典中

jquery - 如何将 JSON 对象传递给 ASP.NET MVC 4 中的 Controller 方法