解析格式Map <string,arraylist <string =“”>&gt;的JSON在android </string,>

时间:2014-11-22 16:22:33

标签: android json

我正在使用这种格式的JSON对象:

  

{&#34; 1&#34;:[&#34; 1&#34;&#34;的test.txt&#34;&#34; authortest&#34;&#34; sizetest&#34 ],&#34; 2&#34;:[&#34; 2&#34;&#34; GraphTheory.pdf&#34;&#34;测试&#34;&#34; 0&#34; ]}

是地图&gt;列表地图;

现在我需要在这里解析它:

截至给定的答案解析是这样完成的:

  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;
}

这里每个Mapping都包含一个包含三个项目的arraylist:BOOKNAME,BOOKAUTHOR和BOOKSIZE。

@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中显示它。如何做到这一点? 我认为适配器需要在onPostExecute方法中设置。但是我无法理解它是什么。从哪里得到这三个:BOOKNAME,                             BOOKAUTHOR,书本型

1 个答案:

答案 0 :(得分:0)

由于您不熟悉JSON,因此您可能需要使用GSON库。要做到这一点,请在build.gradle和sync

中添加yuor依赖项
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);