gpt4 book ai didi

java - JsonSyntaxException - 预期为 BEGIN_OBJECT,但实际为 BEGIN_ARRAY

转载 作者:行者123 更新时间:2023-12-02 02:49:56 26 4
gpt4 key购买 nike

首先,我知道其他一些用户之前已经问过类似的问题,所以您可能认为这是一个重复的问题,但事实并非如此。

我想创建一个模型类来解析 GoogleMaps-Direction API 响应从 JSON 格式到 java 对象。

主要目标是使用 volley 库创建自定义请求对象,以便我可以使用 Web 服务并将响应自动转换为 Java 对象。

正如您在下面的屏幕截图中看到的,json 响应由三个根元素组成。前两个是数组,至少据我所知,[] 符号用于表示 JSON 中的数组,第三个只是一个字符串值。

enter image description here

因此,在模型类中,我尝试执行以下操作,声明一些属性来表示 JSON 响应中的这些元素。

enter image description here

最后我创建了一个新的 android studio 项目来测试这个应用程序。您还可以看到自定义请求的代码。 enter image description here

但是,当我运行该应用程序时,我总是收到一个异常: enter image description here

我可以理解该消息的含义,但我无法完全理解为什么会发生这种情况。异常消息指向响应中的第 16 行。我尝试使用 JSONArrayJSONObject 类获得相同的结果 enter image description here

最佳答案

问题是,GSON 尝试在 JSON 字符串中查找 geocodedWaypoints 对象,当找到时,它会尝试将其值解析为 JSONArray 的实例。但话又说回来,JSONArray 本身就是一个对象,也需要一个标识符。因此,要使用数组作为值,您应该使用常规数组类型,例如字符串[]

将 GoogleMapsResponse 类更改为:

public class GoogleMapsResponse {
private GeocodedWaypoint[] geocodedWaypoints;
private Route[] routes;
private String status;
}

并为所有其他对象创建类:

public class GeocodedWaypoint {
private String geocoderStatus;
private boolean partialMatch;
private String placeId;
private String[] types;
}

等等

关于java - JsonSyntaxException - 预期为 BEGIN_OBJECT,但实际为 BEGIN_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com