String jsonStr 为
{ "error": 0, "msg": "成功", "result": { "tags": [{ "id": "234", "name": "APP用户标签一" }, { "id": "32", "name": "简印客户标签二" }] }}
android studio build里面的dependencies加入compile 'com.google.code.gson:gson:2.2.4'
三个对象类:public class TagBean {
private int error;
private String msg;
private TagResult result;
public int getError() {
return error;
}
public void setError(int error) {
this.error = error;
}
public String getMsg(){
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public TagResult getResult() {
return result;
}
public void setResult(TagResult result) {
this.result = result; }}
public class TagResult {
private List<UserTags> tags;
public List<UserTags> getTags() { return tags; }
public void setTags(List<UserTags> tag) { this.tags = tag; }}
public class UserTags {
private String id;
private String name;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }}
解析的代码:
Gson mg = new Gson();
TagBean mt = mg.fromJson(jsonStr, TagBean.class);
TagResult tr = mt.getResult();
List<UserTags> list = tr.getTags();
StringBuilder sb = new StringBuilder();
if (list != null) {
int size = list.size();
if (size > 0) {
for (int i = 0; i < size; i++) {
sb.append(list.get(i).getId());
sb.append(":");
sb.append(list.get(i).getName());
sb.append("\n"); } } }
tv1.setText(list.size() + "\n" + sb.toString());
工具类:
import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.List; public class GsonUtil { private static Gson mGson = new Gson(); /** * 将json字符串转化成实体对象 * * @param json * @param classOfT * @return */ public static Object stringToObject(String json, Class classOfT) { return mGson.fromJson(json, classOfT); } /** * 将对象准换为json字符串 或者 把list 转化成json * 例如:Friends mFriends = (Friends) GsonUtil.stringToObject(result, Friends.class); * * @param object * @param <T> * @return */ public static <T> String objectToString(T object) { return mGson.toJson(object); } /** * 把json 字符串转化成list * // List<bean类名> list = GsonUtil.stringToList(result, bean类名.class); * * @param json * @param cls * @param <T> * @return */ public static <T> List<T> stringToList(String json, Class<T> cls) { Gson gson = new Gson(); List<T> list = new ArrayList<>(); JsonArray array = new JsonParser().parse(json).getAsJsonArray(); for (final JsonElement elem : array) { list.add(gson.fromJson(elem, cls)); } return list; } }
要是混淆代码的时候,记得要在混淆的文件里面,添加:
##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # Gson specific classes -keep class sun.misc.Unsafe { *; } #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.m.myapp.bean.** { *; } ##这里需要改成解析到哪个 javabean -keep class com.m.myapp.ta.bean.** { *; } ##---------------End: proguard configuration for Gson ----------
一定要注意,不然会出错,解析失败。