我正在研究的一个项目是使用Web API返回异构JSON,我不明白为什么Web服务API需要返回不同的对象图,但这就是返回的内容。
我的问题是
通常/通常的做法是通过相同的API返回不同的对象图吗?通过不同的对象图,我指的是一个变化的复杂对象,它可能具有或不具有一些其他复杂对象作为属性。如果为每个调用返回相同的属性,或者将null值或复杂对象作为其值,但是在响应中完全省略属性使得很难使C#类进行反序列化,这似乎是合理的。
如何在C#中处理JSON异构(反)序列化?反射和运行时代码生成的首选方法是什么?或使用dynamic / expando对象?
答案 0 :(得分:0)
当一些碰巧是复杂对象的字段被省略时,某些API返回不同的对象是有意义的,因为它们有时不包含信息,或者端点根据不同的参数返回不同的对象。不确定是否还有其他情况。
对于不同的JSON,您必须了解API返回的数据并至少获取所需的数据。如果您不完全确定要为其创建课程或不想为其创建课程,则可以使用Json.NET并反序列化为class或dynamic object。
我还建议您阅读API文档,或者使用参数进行某种(边界?)测试,以确定预期的数据。