我正在使用 GSON
来解析 Json 数据。我的 Json 数据如下:
{
"count": "12",
"colbreak": 1,
"name": "unary rels",
"score": "9090",
"Words": [
{
"count": 6,
"word": "prp_għaċ-",
"name": "prp_għaċ-",
"score": 9.1,
"Words": "kol",
"seek": 2231297
}
],
"seek": 0
}
GsonParse.java
public class GsonParse {
@SerializedName("count")
public String count;
@SerializedName("colbreak")
public String colbreak;
@SerializedName("name")
public String count;
@SerializedName("score")
public String score;
@SerializedName("Words")
public List<Words> mWords = new ArrayList<Words>();
@SerializedName("seek")
public String seek;
}
我正在使用下面的方法来解析这个 JSON 数据。
public static <T> ArrayList<T> JsonParse(T t, String response) {
// convert String into InputStream
InputStream in = new ByteArrayInputStream(response.getBytes());
JsonReader reader;
ArrayList<T> lcs = new ArrayList<T>();
try {
reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
Gson gson = new Gson();
reader.beginObject();
while (reader.hasNext()) {
T cse = (T) gson.fromJson(reader, t.getClass());
lcs.add(cse);
}
reader.endObject();
/*
* reader.nextName(); reader.nextString(); reader.nextName();
* reader.nextString();
*/
reader.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (ArrayList<T>) lcs;
}
我面临以下错误。
03-31 10:14:26.968: E/AndroidRuntime(18578): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NAME at line 1 column 73
原文由 dipali 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以尝试像这样读取 gson 值:
假设您只收到这个块而不是列表。而且此数据当前位于 assets 文件夹中的文件中。您可以将其更改为您要从中读取的流。
您使用的类应该如下所示:
GsonParse类
单词类
words.class 中缺少一个参数,您可以添加它。
GSON 不直接支持 UTF-8 字符。因此,当使用 http 接收响应时,您必须在 http 本身的响应中将其转换为 utf-8 格式。
你可以尝试使用: