Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RestSharp:识别不在POCO中的JSON字段_C#_Json_Deserialization_Restsharp - Fatal编程技术网

C# RestSharp:识别不在POCO中的JSON字段

C# RestSharp:识别不在POCO中的JSON字段,c#,json,deserialization,restsharp,C#,Json,Deserialization,Restsharp,我正在使用RestSharp调用RESTAPI,并将JSON反序列化到POCOs。在大多数情况下,这是非常好的工作 我面临的挑战是API没有完整的文档记录。它主要是为每个端点返回JSON有效负载的示例。我已经用它们为这些端点构建了POCO 但这些例子有些不可靠。其中一些显示的属性的名称使它们听起来像子对象,但示例只是将属性设置为null,因此POCO没有什么可操作的 相反,有时我实际接收到的属性没有显示在示例中,因此如果我没有亲自检查JSON,我就不会知道包含它们 我做的第一件事就是联系API供

我正在使用
RestSharp
调用RESTAPI,并将JSON反序列化到POCOs。在大多数情况下,这是非常好的工作

我面临的挑战是API没有完整的文档记录。它主要是为每个端点返回JSON有效负载的示例。我已经用它们为这些端点构建了POCO

但这些例子有些不可靠。其中一些显示的属性的名称使它们听起来像子对象,但示例只是将属性设置为
null
,因此POCO没有什么可操作的

相反,有时我实际接收到的属性没有显示在示例中,因此如果我没有亲自检查JSON,我就不会知道包含它们

我做的第一件事就是联系API供应商。我要求提供模式,但他们声称没有模式,这有点不可思议。这些例子是所有的文档。他们没有开发者论坛

现在,
RestSharp
相当优雅地处理了“超出预期的数据量”的情况,没有任何问题:

您的类定义了希望如何反序列化返回的数据。 而不是遍历数据并搜索匹配的属性 在课堂上,RestSharp以课堂为起点, 通过每个可公开访问、可写的属性和 在返回的数据中搜索相应的元素

(来源:)

那很好。但是,当我接收到POCO无法捕获的数据时,我希望通过编程方式得到通知。然后我至少可以通知运营商需要做更多的开发

有人知道这样做的扩展或添加吗?我宁愿不写我自己的反序列化只是为了添加这个功能


看起来与我的类似,但它似乎指的是在这种情况下爆炸的早期版本的
RestSharp
。由于我的一些POCO映射到关系数据库表,这与“灵活”相反,因此使用
dynamics
的解决方案根本无法满足我的需要。

我知道这不是您的情况,但您可以在Json.Net中使用MissingMemberHandling。@L.B谢谢。我认为自定义反序列化器或基于反序列化器逻辑的帮助器类是我唯一的选择。不幸的是,
JsonDeserializer
,虽然没有密封,但编写时没有考虑继承。所有的核心逻辑都在私有方法中。Json.Net是Json处理的瑞士军刀。如果你想走那条路,你可以问另一个问题,