Hybris 18.11 与 GSON 和 Stripe 冲突

问题描述

对于我的项目,我使用 hybris v18.11,并使用 Stripe 支付网关,我需要使用通过 gson 库提供的 Stripe 的 Charge 对象获取 rawJsonObject。下面是 StripeObject 中提供 rawJsonObject 的代码

this.rawJsonObject = ApiResource.GSON.fromJson(this.getLastResponse().body(),JsonObject.class);

我在 hybris 项目中获取this.getLastResponse().body() 填充的字符串值,并尝试使用 gson 手动转换它,并且成功了。 我能够在非 hybris 项目(正常的 maven/gradle 项目)中获取 rawJsonObject,同时通过 hybris 项目获取相同的 rawJsonObject 返回的空{}。 我在 hybris 和非 hybris 项目中尝试使用 gson v2.8.2 V2.8.6、v2.5,每次我在非 hybris 项目中收到正确的响应,而 hybris 项目中的 JSON 对象为空时。 我在 hybris 项目中尝试使用 Stripe-java-20.47.0.jar 和 Stripe-java-20.36.0.jar 得到相同的结果空 rawJsonObject。 任何线索都会有所帮助,如果我遗漏了什么或者我需要测试其他任何东西,请告诉我。

解决方法

这种情况是 100% 还是间歇性地发生?我想知道响应正文是否可能因某种原因发生了变异并变得不可用。

您是否尝试过使用内置的 getRawJsonObject() (source)?它会在第一次访问响应时记录这一点,因此如果一个流被消费,它可能会保留在这里。