我正在尝试用gson读取json,但我无法使用“简单”的gson示例。
来自:https://sites.google.com/site/gson/streaming
public List<Message> readJsonStream(InputStream in) throws IOException {
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
List<Message> messages = new ArrayList<Message>();
reader.beginArray();
while (reader.hasNext()) {
Message message = gson.fromJson(reader, Message.class);
messages.add(message);
}
reader.endArray();
reader.close();
return messages;
}
如果我尝试使用以下是问题:
JsonReader reader;
Gson gson = new Gson();
gson.fromJson(reader,Program.class);
它甚至没有构建。
The method fromJson(String, Class<T>) in the type Gson is not applicable for the arguments (JsonReader, Class<Program>)
根据日食似乎有一种方法: fromJson(JsonReader arg0,Type arg1)
答案 0 :(得分:5)
替换
import android.util.JsonReader;
与
import com.google.gson.stream.JsonReader
做到了! =)
答案 1 :(得分:1)
提到fromJson方法接受参数0作为String。尝试创建一个将inputStream转换为String的方法。
static public String generateString(InputStream stream) {
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader buffer = new BufferedReader(reader);
StringBuilder sb = new StringBuilder();
try {
String cur;
while ((cur = buffer.readLine()) != null) {
sb.append(cur).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}