我正在使用RestSharp
来调用REST API,并将JSON反序列化为POCO。而且在大多数情况下,这都非常有效。
我面临的挑战是API没有完整记录。它主要是每个端点返回的JSON有效负载的示例。我用这些来为这些端点构建POCO。
但这些例子有点不可靠。其中一些显示属性,其名称使它们听起来像子对象,但示例只是将属性设置为null
,因此POCO没有任何内容可循。
相反,有时我实际收到的属性没有在示例中显示,所以如果我没有亲手仔细检查JSON,我就不会知道包含它们。
我做的第一件事就是联系API供应商。我问过模式,但他们声称,有些不可思议,没有任何模式。这些例子都是文档。他们没有开发者论坛。
现在,RestSharp
合理优雅地处理“比预期更多的数据”情况,因为没有任何事情发生:
您的类定义了如何反序列化返回的数据。 而不是遍历数据并搜索匹配的属性 在你的班级,RestSharp使用你的班级作为起点, 循环遍历每个可公开访问的可写属性和 在返回的数据中搜索相应的元素。
(资料来源:https://github.com/restsharp/RestSharp/wiki/Deserialization)
那太好了。但我想要的是以编程方式通知我收到POCO无法捕获的数据。然后我至少可以通知操作员需要做更多的开发。
是否有人知道这样做的扩展或添加?我宁愿不写我自己的反序列化器只是为了添加这个功能。
This question看起来与我的相似,但看起来它指的是在这种情况下爆炸的早期版本RestSharp
。由于我的一些POCO映射到关系数据库表,这与“灵活”相反,使用dynamics
的解决方案根本无法满足我的需求。