2014-02-23 52 views
0

我有後續的JSON(從URL)當JSON沒有「名稱屬性」時如何使用GSON?

["Rock","Rock Argentino","Reggaeton","En Español","Reggaeton ","Reggaeton ","Boleros","Italianos ","Cumbias ","Cumbia ","Internacional","Internacional "] 

你可以看到,沒有一個「名稱屬性」這些字段。

我的類模型是遵循

public class KaraokeCategoryModel { 
private String name; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

}

但GSON犯規reconize我的屬性附加傷害 「名」

Type karaokeCollection = new TypeToken<Collection<KaraokeCategoryModel>>() {}.getType(); 
     _karaoke_cartegory_response = new Gson().fromJson(reader, karaokeCollection); 

後來我創建適配器

_karaoke_category_adapter = new KaraokeCategoryAdapter(getSupportActionBar().getThemedContext(), R.layout.spinner_item, _karaoke_cartegory_response); 
     getSupportActionBar().setListNavigationCallbacks(_karaoke_category_adapter, this); 

我應該怎麼做才能讓GSON毫無問題地使用我的模型?

+0

爲什麼不只是把它理解爲一個'清單'並創建每個字符串'KaraokeCategoryModel'對象? (您需要爲您的類創建一個構造函數。) –

+0

@ChthonicProject使用該選項創建適配器是否複雜? – cheloncio

+0

我看不出創建適配器的方式會根據您創建'KaraokeCategoryModel'的方式而改變。 –

回答

1

你可以做到這一點與下面的代碼更容易:

List<KaraokeCategoryModel> karaokeCategoryList = new ArrayList<KaraokeCategoryModel>(); 

JsonElement json = new JsonParser().parse(yourJsonStringValueHere); 
JsonArray jsonArray = json.getAsJsonArray(); 
Iterator iterator = jsonArray.iterator(); 
while(iterator.hasNext()){ 
    JsonElement jsonElementInArray = (JsonElement)iterator.next(); 

    KaraokeCategoryModel karaokeCategory = new KaraokeCategoryModel(); 
    karaokeCategory.setName(jsonElementInArray.getAsString()); 

    karaokeCategoryList.add(karaokeCategory);  
} 
+0

卓越的幫助,但在JsonElement json = new JsonParser()。解析(URL)aplication崩潰; **我可以把網址JSON嗎? – cheloncio

+1

我不這麼認爲。看看如何從uri獲取json值(字符串)http://stackoverflow.com/questions/19966672/java-json-with-gson – Devrim

相關問題