gpt4 book ai didi

java - 预期 BEGIN_ARRAY 但在第 1 行第 1 列路径 $ GSON 处为 STRING

转载 作者:太空狗 更新时间:2023-10-29 13:55:38 24 4
gpt4 key购买 nike

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

这是我的代码:

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;
}
}

和我的 json:

{
"content":[
{
"descripcion":"Giro para carnicer\u00edas",
"nombre":"Carnicer\u00eda",
"id":1
},
{
"descripcion":"Giro para pescader\u00edas",
"nombre":"Pescados",
"id":2
},
{
"descripcion":"Giro para fruter\u00edas\r\n",
"nombre":"Frutas y verduras",
"id":3
},
{
"descripcion":"",
"nombre":"Pollos",
"id":13
},
{
"descripcion":"",
"nombre":"Abarrotes",
"id":14
},
{
"descripcion":"",
"nombre":"Comida",
"id":15
},
{
"descripcion":"",
"nombre":"Ex\u00f3ticos",
"id":16
},
{
"descripcion":"",
"nombre":"Otros",
"id":17
}
]
}

最佳答案

您可以只修改您正在使用的 POJO 以处理该 “content” 字段,然后解析内部 Array:

------------------------------------com.example.Content.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;
}

}

------------------------------------com.example.GiroContainer.java-- ----------------------------------

package com.example;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class GiroContainer {

private List<Content> content = new ArrayList<Content>();

/**
*
* @return
* The content
*/
public List<Content> getContent() {
return content;
}

/**
*
* @param content
* The content
*/
public void setContent(List<Content> content) {
this.content = content;
}


}

关于java - 预期 BEGIN_ARRAY 但在第 1 行第 1 列路径 $ GSON 处为 STRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39900583/

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