【问题标题】:retrofit com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $改造 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ BEGIN_ARRAY
【发布时间】:2017-05-04 20:27:01
【问题描述】:

他们是 Retrofit 的新手,我正在尝试使用 ID 和 post 方法从 JSON 中获取数据,但我抛出了这个错误。

enter image description here

这是我正在尝试使用的 JSON `

[{"idPlakas":"6","latitud":"19.681984","longitud":"-101.171496","titulo":"markador"}]

这是我通过 ID 发出请求的 post 方法。

@FormUrlEncoded
@POST("/Cprincipal/obtener_carro/")
void obtCarro(@Field("idPlakas") int idPlakas, Callback<Carro> callback);

我执行以下代码来接收对象和它所拥有的信息,并将这个相同的 madarla 发送到另一个可以创建标记的方法。 但是在运行我的应用程序时没有进入那个方法,我得到了错误。

public void actualizarMarcador() {
    RestAdapter restAdapter =  new RestAdapter.Builder().setEndpoint("http://192.168.1.70/formularios").build();

    CoordenadaServicio serv = restAdapter.create(CoordenadaServicio.class);

    serv.obtCarro(placaM, new Callback<Carro>() {

        @Override
        public void success(Carro carro, Response response) {

            if (carroObjeto!=null){
                carroObjeto=null;
            }
            carroObjeto = new Carro();
            carroObjeto.setIdPlakas(carro.getIdPlakas());
            carroObjeto.setLongitud(carro.getLongitud());
            carroObjeto.setLatitud(carro.getLatitud());
            carroObjeto.setTitulo(carro.getTitulo());



            generarMarker(carroObjeto);
        }
        @Override
        public void failure(RetrofitError error) {
            Log.e("mapa", " failed "+ String.valueOf(error));
        }
    });
}

这是我的课

class Carro {

@SerializedName("idPlakas")
private int idPlakas;
public int getIdPlakas() {
    return idPlakas;
}

public void setIdPlakas(int idPlakas) {
    this.idPlakas = idPlakas;
}

@SerializedName("latitud")
private Double latitud;
public Double getLatitud() {
    return latitud;
}

public void setLatitud(Double latitud) {
    this.latitud = latitud;
}

@SerializedName("longitud")
private Double longitud;
public Double getLongitud() {
    return longitud;
}

public void setLongitud(Double longitud) {
    this.longitud = longitud;
}

@SerializedName("titulo")
private String titulo;
public String getTitulo() {
    return titulo;
}

public void setTitulo(String titulo) {
    this.titulo = titulo;
}

}

【问题讨论】:

  • 我们看看 Carro 类,可能是不正确的。
  • Hola @Nasch Agregar clase a mi pregunta。

标签: android json retrofit


【解决方案1】:

您的 Callback 需要一个 Carro 对象。

Callback<Carro> callback

但您发布的响应是一个 Json 数组(注意方括号)

[{"idPlakas":"6","latitud":"19.681984","longitud":"-101.171496","titulo":"markador"}]

所以你需要改变你的回调来期待List&lt;Carro&gt;

【讨论】:

    猜你喜欢
    • 2020-01-29
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多