gson与混合阅读

时间:2013-07-03 16:31:23

标签: java android parsing gson

我正在尝试用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)

2 个答案:

答案 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(); 
    }