2013年10月8日星期二

[Android] Gson how to parse an array type Json

Heroes , little brother just learning Android, encountered a problem : Gson Json how to parse an array type

array type something like:

{
"count": 100,
"page": 1,
"list": [{
"title": " I ​​"
"tel": "110"
},
{
"title": " your" ,
"tel": "120"
}]
}

I do not know how to resolve this type of Json with gson , expect heroes pointing, it is best to have the code ! Thank you !

------ Solution ------------------------------------ --------
no need to use Gson
JSONObject jsonObject = new JSONObject (String); this json data into an object.
then JSONArray jsonArray = jsonObject.getJSONArray ("list"); obtain list data inside
for (int i = 0; i {
JSONObject jsonOb = (JSONObject) jsonArray.opt (i);
int tel = jsonOb.getInt ("tel");
}
loop reads the intermediate data
------ eference ------------------------------ ---------
String json = "{start: 0, pageCount: 2, dataList: [{\"STRPRODUCTCODE\":\"DWJ100\",\"STRVERSIONXZTEXT\":\"初始安装包\",\"STRPRODUCTNAME\":\"对外经贸查询系统\",\"STRVERSIONTYPE\":\"10\",\"STRVERSIONID\":\"V1                                      \",\"STRVERSIONCODE\":\"1.0.2.1018\",\"LINE_NUM\":1,\"STRVERSIONXZ\":\"10\",\"LIMIT\":1,\"NUMSHOWORDER\":1,\"STRVERSIONLOG\":\"修复1个bug,增加2个功能\",\"STRVERSIONTYPETEXT\":\"标准版\",\"DATRELEASEDATE\":\"2013-9-28 10:47:26\",\"STRVERSIONFY\":\"10万人民币\",\"STRSUPPORTOS\":\"Windows 2003/Windows 2008\",\"STRDELFLG\":\"0\"}" +
     ",{\"STRPRODUCTCODE\":\"DWJ100\",\"STRVERSIONXZTEXT\":\"初始安装包\",\"STRPRODUCTNAME\":\"对外经贸查询系统\",\"STRVERSIONTYPE\":\"10\",\"STRVERSIONID\":\"V1                                      \",\"STRVERSIONCODE\":\"1.0.2.1018\",\"LINE_NUM\":1,\"STRVERSIONXZ\":\"10\",\"LIMIT\":1,\"NUMSHOWORDER\":1,\"STRVERSIONLOG\":\"修复1个bug,增加2个功能\",\"STRVERSIONTYPETEXT\":\"标准版\",\"DATRELEASEDATE\":\"2013-9-28 10:47:26\",\"STRVERSIONFY\":\"10万人民币\",\"STRSUPPORTOS\":\"Windows 2003/Windows 2008\",\"STRDELFLG\":\"0\"}" +
     "]}";
     Gson gson = new Gson();
     JsonParser parser = new JsonParser();
     List<Map<String,String>> list = new ArrayList<Map<String,String>>();
     JsonObject jsonObject = parser.parse(json).getAsJsonObject();
     JsonArray jsonArray = jsonObject.getAsJsonArray("dataList");
        Type type = new TypeToken<Map<String,String>>() {}.getType();
     for (int i = 0; i < jsonArray.size(); i++) {
            JsonElement el = jsonArray.get(i);
            Map<String,String> tmp = gson.fromJson(el, type);
            list.add(tmp);
            System.out.println(tmp.get("STRPRODUCTCODE"));
        }
     jsonObject.remove("dataList");
     jsonObject.add("dataList", parser.parse(gson.toJson(list)).getAsJsonArray());
     System.out.println(gson.toJson(jsonObject));

没有评论:

发表评论