2

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

根据eclipse好像有一个方法: fromJson(JsonReader arg0, Type arg1)

4

2 回答 2

5

代替

import android.util.JsonReader;   

import com.google.gson.stream.JsonReader 

做到了!=)

于 2013-07-03T17:47:23.860 回答
1

提到 fromJson 方法接受参数 0 作为字符串。尝试创建一个将 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(); 
    }
于 2013-07-03T16:53:09.160 回答