关闭

Gson解析json对象,json数组

标签: jsongson
2501人阅读 评论(0) 收藏 举报
分类:

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

一定要注意,不然会出错,解析失败。



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:95015次
    • 积分:874
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:28篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论