2014-11-22 91 views
0

我有這種格式的JSON對象:解析JSON <字符串,ArrayList的<String>>在機器人

{ 「1」:[ 「1」, 「test.txt的」, 「authortest」 ,「sizetest」],「2」:[「2」,「GraphTheory.pdf」,「testing」,「0」]}

它是Map> listMap;

現在我需要解析它在這裏:

給出答案解析像這樣做:

protected Map<String,ArrayList<String>> doInBackground(
      String... arg0) { 
     JSONParser jParser = new JSONParser(); 
     String json = jParser.getJSONFromUrl(url); 
     Gson gson = new Gson(); 
     Type type = new TypeToken<Map<String, List<String>>>() {}.getType(); 
     Map<String,ArrayList<String>> allBookList = gson.fromJson(json, type); 
     return allBookList; 
} 

這裏每個映射包含一個ArrayList有三個項目:BOOKNAME,BOOKAUTHOR和書本型。

@Override 
    protected void onPostExecute(Map<String, ArrayList<String>> result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     ListAdapter adapter = new SimpleAdapter(
       ViewLibrary.this, result, 
       R.layout.book_item, new String[] { BOOKNAME, 
         BOOKAUTHOR,BOOKSIZE }, new int[] { R.id.bookname, 
         R.id.bookauthor, R.id.booksize }); 

     lv.setAdapter(adapter); 
    } 

現在我需要顯示它在一個listview.How做到這一點? 我覺得適配器需要onPostExecute method.But進行設置,我無法理解它從哪裏得到這三個how.As:BOOKNAME, BOOKAUTHOR,書本型

+0

它不工作?怎麼了? – Salem 2014-11-22 16:48:12

+0

@Salem我是JSON的新用戶,所以我不知道如何解析它。 – user3185653 2014-11-22 16:49:21

回答

0

由於您是新的JSON可能要使用GSON庫。要做到這一點的build.gradle中添加上你的依賴和同步

compile 'com.google.code.gson:gson:2.3' 

假設json包含您的JSON字符串,你可以使用它像這樣:

import java.lang.reflect.Type; 
import com.google.gson.Gson; 
import com.google.gson.reflect.TypeToken; 

// (...) 

Gson gson = new Gson(); 
Type type = new TypeToken<Map<String, List<String>>>() {}.getType(); 
Map<String, List<String>> map = gson.fromJson(json, type); 
+0

類型聲明給出錯誤 – user3185653 2014-11-22 17:11:01

+0

要使用Type導入什麼? – user3185653 2014-11-22 17:12:19

+0

@ user3185653看我的編輯。 – Salem 2014-11-22 17:15:52