2014-11-22 23 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

相关问题