应为字符串,但在第 1 行第 123 列路径 $.options 处为 BEGIN_OBJECT。在easypost发货中

Posted

技术标签:

【中文标题】应为字符串,但在第 1 行第 123 列路径 $.options 处为 BEGIN_OBJECT。在easypost发货中【英文标题】:Expected a string but was BEGIN_OBJECT at line 1 column 123 path $.options. in easypost shipment 【发布时间】:2019-06-04 10:25:27 【问题描述】:

当我使用时,我正在使用 Easy post API 将货件集成到我的应用程序中 shipment.create(shipmentMap, EASYPOSTAPIKEY) 它抛出一个错误期望一个字符串,但在第 1 行第 1 列第 123 列路径 $.optionsBEGIN_OBJECT

下面是我的代码

Map<String, Object> parcelMap = new HashMap<String, Object>();
parcelMap.put("predefined_package", "FlatRateEnvelope");
parcelMap.put("weight", 10);
Parcel parcel = Parcel.create(parcelMap);
Map<String, Object> shipmentMap = new HashMap<String, Object>();
shipmentMap.put("to_address", toAddress);
shipmentMap.put("from_address", fromAddress);
shipmentMap.put("parcel", parcel);
Shipment shipment = Shipment.create(shipmentMap, EASYPOSTAPIKEY);

java.lang.IllegalStateException:需要一个字符串,但 BEGIN_OBJECT 在第 1 行第 123 列路径 $.options.at com.google.gson.stream.JsonReader.nextString(JsonReader.java:825) ~[gson-2.8.5.jar:na]

【问题讨论】:

我遇到了同样的问题,但令人讨厌的是它只发生在生产中。我将问题缩小到 Gson 无法解析 Map 选项; Shipment 类中的对象。我将在 EasyPost GitHub 中为此创建一个问题 github问题:github.com/EasyPost/easypost-java/issues/54 【参考方案1】:

更新最新版本的 Easy Post 客户端 API 应该可以解决此问题。

【讨论】:

我也遇到了同样的问题,但是我已经有最新版的easy post client api【参考方案2】:

我不确定 Easy post API 但来自异常

options.at com.google.gson.stream.JsonReader.nextString(JsonReader.java:825) ~[gson-2.8.5.jar]

我可以说它与 GSON 有关。

据我了解,GSON 说它需要一个字符串,但有一个对象。

为此推荐了这篇文章。 GSON throwing "Expected BEGIN_OBJECT but was BEGIN_ARRAY"?

我会要求您再次浏览文档并检查您遗漏的内容

【讨论】:

以上是关于应为字符串,但在第 1 行第 123 列路径 $.options 处为 BEGIN_OBJECT。在easypost发货中的主要内容,如果未能解决你的问题,请参考以下文章

应为 BEGIN_ARRAY,但在第 1 行第 1 列路径为 STRING

Retrofit2:预期为 BEGIN_ARRAY,但在第 1 行第 268 列路径 $[0].images 处为 STRING

获得错误预期BEGIN_ARRAY但在第1行第2列路径$是BEGIN_OBJECT

预期 BEGIN_OBJECT 但在第 1 行第 1 列路径为 STRING - Laravel 到改造 2

改造后请求错误 - java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列路径 $

AsyncTask 预期为 BEGIN_OBJECT,但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY