预计BEGIN_ARRAY但是在第1行第1列路径$ GSON处是STRING

时间:2016-10-06 15:55:29

标签: java android json gson

我是新手,无法解释为什么它一遍又一遍地给我同样的错误。 我试图检索字符串列表,但它一直显示下面的错误。这是课程。请帮忙!!

这是我的代码:

SELECT *                  
FROM game m
INNER JOIN predictions p ON m.id = p.id_game
AND m.id IN (
 SELECT m.id                  
 FROM game m
 INNER JOIN predictions p ON m.id = p.id_game
 WHERE p.value_1 >= m.min_value_1 OR p.value_2 >= m.min_value_2
)

和我的json:

super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    listView = (ListView) findViewById(R.id.listGiros);


    try {
        ConnectivityManager connMgr = (ConnectivityManager)
                getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            new JsonTask().
                    execute(new URL("http://vps197363.ovh.net:8002/api/api/giros.json"));
        } else {
            Toast.makeText(this, "Error de conexión", Toast.LENGTH_LONG).show();
        }

    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
}

public class JsonTask extends AsyncTask<URL, Void, List<Giro>> {

    @Override
    protected List<Giro> doInBackground(URL... urls) {
        List<Giro> giros = null;

        try {

            con = (HttpURLConnection) urls[0].openConnection();
            con.setConnectTimeout(15000);
            con.setReadTimeout(10000);
            con.setDoInput(true);

            // Obtener el estado del recurso
            int statusCode = con.getResponseCode();

            if (statusCode != 200) {
                giros = new ArrayList<>();
                giros.add(new Giro("Error", null, null));

            } else {


                InputStream in = new BufferedInputStream(con.getInputStream());


                GsonGiroParser parser = new GsonGiroParser();

                giros = parser.leerFlujoJson(in);


            }

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            con.disconnect();
        }
        return giros;
    }

    @Override
    protected void onPostExecute(List<Giro> giros) {

        if (giros != null) {
            adaptador = new AdaptadorDeGiros(getBaseContext(), giros);
            listView.setAdapter(adaptador);
        } else {
            Toast.makeText(
                    getBaseContext(),
                    "Ocurrió un error de Parsing Json",
                    Toast.LENGTH_SHORT)
                    .show();
            System.out.println("ADAPTADOR" + adaptador);
            System.out.println("ADAPTADOR" +  getBaseContext());
        }

    }
}

public class GsonGiroParser {


public List<Giro> leerFlujoJson(InputStream in) throws IOException {

    Gson gson = new Gson();

    JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));

    List<Giro> giros = new ArrayList<>();

    reader.beginArray();

    while (reader.hasNext()) {

        Giro giro = gson.fromJson(reader, Giro.class);
        giros.add(giro);
    }


    reader.endArray();
    reader.close();
    return giros;
}
}

public class JsonGiroParser {


public List<Giro> leerFlujoJson(InputStream in) throws IOException {

    JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
    try {

        return leerArrayGiros(reader);
    } finally {
        reader.close();
    }

}


public List<Giro> leerArrayGiros(JsonReader reader) throws IOException {

    ArrayList<Giro> giros = new ArrayList<>();

    reader.beginArray();
    while (reader.hasNext()) {

        giros.add(leerGiro(reader));
    }
    reader.endArray();
    return giros;
}

public Giro leerGiro(JsonReader reader) throws IOException {

    String id = null;
    String nombre = null;
    String descripcion = null;

    reader.beginObject();


    while (reader.hasNext()) {
        String name = reader.nextName();
        switch (name) {
            case "id":
                id = reader.nextString();

                break;
            case "nombre":
                nombre = reader.nextString();
                break;
            case "descripcion":
                descripcion = reader.nextString();
                break;
            default:
                reader.skipValue();
                break;
        }
    }
    reader.endObject();
    return new Giro(id, nombre, descripcion);
}

}

public class Giro {

private String id;
private String nombre;
private String descripcion;

public Giro(String id, String nombre, String descripcion) {
    this.id = id;
    this.descripcion = descripcion;
    this.nombre = nombre;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public String getDescripcion() {
    return descripcion;
}

public void setDescripcion(String descripcion) {
    this.descripcion = descripcion;
}
}

1 个答案:

答案 0 :(得分:1)

您只需修改正在使用的a即可处理&#34;内容&#34; 字段,然后解析内部POJO:< / p>

<强> ----------------------------------- com.example.Content.java-- ---------------------------------

Array

<强> ----------------------------------- com.example.GiroContainer.java-- ---------------------------------

package com.example;

import java.util.HashMap;
import java.util.Map;

public class Content {

private String descripcion;
private String nombre;
private Integer id;
/**
* 
* @return
* The descripcion
*/
public String getDescripcion() {
return descripcion;
}

/**
* 
* @param descripcion
* The descripcion
*/
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}

/**
* 
* @return
* The nombre
*/
public String getNombre() {
return nombre;
}

/**
* 
* @param nombre
* The nombre
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}

/**
* 
* @return
* The id
*/
public Integer getId() {
return id;
}

/**
* 
* @param id
* The id
*/
public void setId(Integer id) {
this.id = id;
}

}