我正在使用这种格式的JSON对象:
{" 1":[" 1""的test.txt"" authortest"" sizetest&#34 ]," 2":[" 2"" GraphTheory.pdf""测试"" 0" ]}
是地图>列表地图;
现在我需要在这里解析它:
截至给定的答案解析是这样完成的:
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,书本型
答案 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);