所以我使用 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/