2016-01-09 2 views
0
Gson gson = new Gson(); 
JsonParser parser = new JsonParser(); 

JsonElement obj = parser.parse(Tempx.getString("GSON_FEED","")).getAsJsonObject(); 

for(JsonElement jsx: obj) { 
    MainPojo cse = gson.fromJson(jsx, MainPojo.class); 
    TweetList.add(cse); 
    Log.w("F:", "" + TweetList.get(0).getStatuses().get(0).getScreenName()); 
} 

Попытка хранить JsonObjects в ArrayList, но я получаю сообщение об ошибке в строке под objхранения JsonElement в ArrayList вызывает ошибки

for(JsonElement jsx: obj) говоря

Еогеасп не относится к типу «ком .google.gson.JsonElement

Как это исправить?

+0

где ваш выход ?? JSON –

+1

Невозможно выполнить итерацию через объект json, получить json-массив из объекта json, затем применить для каждого цикла –

ответ

0

Вы можете легко прочитать JSONArray в категории ArrayList класса типа, представляющего JSONArray. Спасибо GSON Весь этот процесс можно выполнить в одной строке кода. как показано ниже.

ArrayList<MyItem> items2 = (new Gson()).fromJson(result,new TypeToken<ArrayList<MyItem>>() {}.getType()); 

Давайте предположим, что вы получаете с JSONArray типа MyItem выше строки кода преобразует JSONArray в ArrayList типа MyItem.

Я написал образец кода, чтобы вы могли получить более качественное изображение.

import java.util.ArrayList; 

import com.google.gson.Gson; 
import com.google.gson.reflect.TypeToken; 

public class MyTest { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     ArrayList<MyItem> items = new ArrayList<>(); 
     for (int i = 0; i < 5; i++) { 
      MyItem item = new MyItem(); 
      item.setRate("rate_"+i); 
      item.setSomeCode("some_"+i); 
      items.add(item); 
     } 

     String result = (new Gson()).toJson(items); 

     System.out.println(""+result); 

     ArrayList<MyItem> items2 = (new Gson()).fromJson(result,new TypeToken<ArrayList<MyItem>>() {}.getType()); 

     System.out.println(""+items2.size()); 
    } 
} 

class MyItem { 
    private String rate; 
    private String someCode; 

    public String getRate() { 
     return rate; 
    } 

    public void setRate(String rate) { 
     this.rate = rate; 
    } 

    public String getSomeCode() { 
     return someCode; 
    } 

    public void setSomeCode(String someCode) { 
     this.someCode = someCode; 
    } 
} 

Выход

[ 
    { 
    "rate": "rate_0", 
    "someCode": "some_0" 
    }, 
    { 
    "rate": "rate_1", 
    "someCode": "some_1" 
    }, 
    { 
    "rate": "rate_2", 
    "someCode": "some_2" 
    }, 
    { 
    "rate": "rate_3", 
    "someCode": "some_3" 
    }, 
    { 
    "rate": "rate_4", 
    "someCode": "some_4" 
    } 
] 

это JSONArray превращается в ArrayList типа MyItem

Я также написал некоторые ответы по этой теме, которые вы можете проверить для получения дополнительной информации на serialization и de-serialization с использованием GSON библиотеки

Example_1

Example_2

Example_3

Example_4

Смежные вопросы