改进com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第2行路径$ BEGIN_ARRAY $

时间:2017-05-04 20:27:02

标签: android json retrofit

他们是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;
}

}

1 个答案:

答案 0 :(得分:1)

您的Carro需要一个Callback<Carro> callback 个对象。

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

但您发布的回复是Json数组(注意方括号)

List<Carro>

因此您需要更改回调以期望print STDERR "\nReading input file...\n"; if ($file =~ /.gz$/) { open(IN, "gunzip -c $file | grep -v '##' |") or die " *** ERROR *** Cannot open pipe to [ $file ]!\n"; } else { open(IN, "cat $file | grep -v '##' |") or die " *** ERROR *** Cannot open [ $file ]!\n"; }