2013-07-03 3 views
2

Я пытаюсь прочитать json с gson, но я не могу получить «простой» пример gson для работы.gson with mixed read

От: 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, Тип арг1)

ответ

5

Заменить

import android.util.JsonReader; 

с

import com.google.gson.stream.JsonReader 

сделал это! =)

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(); 
    } 
+0

Нет, я не могу поместить все в память. Я должен немного потопить, но не все. – Toydor