之前也用过Gson, 但可以说那根本就不是用,只是很简单的将json string 通过
MyObject obj = gson.fromJson(jsonString, MyObject.class);
得到对象了。而且MyObject的属性也是很平常的, 近段时间遇到一些还没接触过的,记录一下
一,取某一段 json string
String pp = "{\"data\":{\"A\":12, \"B\":\"ee\"}, \"data2\":78}";
JsonObject jobj = new JsonParser().parse(pp).getAsJsonObject();
JsonObject dataObj = jobj.get("data").getAsJsonObject();
JsonElement a = dataObj.get("A");
二,取jsonArray
class User{
String name;
int age;
}
String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println("name--->" + user.name);
System.out.println("age---->" + user.age);
}
三,类似这种map形式的...(这个得多谢
http://blog.youkuaiyun.com/lk_blog/article/details/7685224
前天也看了这篇,可能不认真看,还以为大Google没有处理map形式的)
String json = "{\"1\": [\"095\", \"05\", 1], \"0\": [\"b95\", \"66\", 13]}";
//Intent intents = new Intent(this, FoodInfoActivity.class);
//startActivityForResult(intents, 0x99);
//Type lstTpe = new TypeToken<LinkedList<Object>>(){}.getType();
Type mapTpe = new TypeToken<HashMap<String, List<Object>>>(){}.getType();
Gson gson2 = new Gson();
Map<String, Object> retMap =gson2.fromJson(json, mapTpe);
for (String key : retMap.keySet()) {
System.out.println("key:" + key + " values:" + retMap.get(key));
}