从 UPS RESTful API 反序列化不一致的单个/数组数据

问题描述 投票:0回答:1

UPS RESTful API 遇到问题。我们尝试创建类型良好的类来反序列化它们的响应,但似乎有时它们返回单个节点,有时返回某些数据的数组。对于所附图像,他们的文档说 RatedShipment 应该是对象的数组/列表,但有时它们返回单个节点。下面的 RatedShipmentAlert 也是如此。有没有办法让它反序列化的类变得“灵活”并处理任一实例?现在我们的对象为 RatedShipment As List(Of Rate_RateResponse_RatedShipment),当它是单个对象时,反序列化失败。

objRateResponse = Newtonsoft.Json.JsonConvert.DeserializeObject(Response_RateResponse)(objResponse.Content)

提前致谢,

result

json deserialization json-deserialization ups
1个回答
0
投票

我希望能给你一个真正的答案。我得出的结论是,您需要创建一个自定义 JSON 反序列化器来处理这个可怕的 API!更好的答案是找到其他人开发的使用您给定语言的 SDK 或包装器来处理此问题。在我看来,必须创建一些定制的反序列化器违背了与 API 集成的全部目的!尤其是在 2024 年的今天,这应该很容易,而不是那么复杂。我不知道为什么,但 UPS 总是呈现非标准化的 JSON...即使是在旧的 API 中,但至少之前我能够找到一个名为 DotNetShipping 的包装器,它可以很好地处理它。目前我正忙着在六月到来之前找到一个新的。但我认为它不可用,因为它较新,并且可能需要做我在创建自定义反序列化器时所害怕的事情......对于应该如此简单的事情来说真是浪费时间!

去年 2023 年,我向 UPS 开发团队报告了同样的问题。他们表示,他们已经意识到我报告的这个问题,并正在努力解决。在我这些年里,我从未见过任何 API 的行为如此不一致。我从来没有想象过,如此大的公司,拥有许多依赖它的业务,会产生如此易于其他开发人员集成的东西?

几个月前,我收到一封来自 UPS 的电子邮件,提醒我们他们正在关闭旧的 API,并且我们需要确保迁移到新的 OAuth 2.0 API。我给他们回了消息,询问他们是否解决了我报告的问题。他们给出了一般性答复,所有报告的问题都已得到解决。快进到今天,2024 年 4 月底……大约一个月后,他们就完全弃用旧的 API。我本季度有一个项目要完成向新 API 的迁移,但确切的问题仍然存在!

© www.soinside.com 2019 - 2024. All rights reserved.