Gson解析json对象,json数组

原创 2016年08月29日 15:09:25

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

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



Gson解析json数组

package test; import java.lang.reflect.Type; import java.util.LinkedList; import java.util.List; ...

gson解析json数组

GSON的两个重要方法   在GSON的API中,提供了两个重要的方法:toJson()和fromJson()方法。其中,toJson()方法用来实现将Java对象转换为相应的JSON数据,from...
  • L_GQ_
  • L_GQ_
  • 2016年07月24日 14:28
  • 10348

使用Gson解析复杂的json数据

Gson解析复杂的json数据
  • tkwxty
  • tkwxty
  • 2014年06月25日 18:48
  • 166164

Android:用GSON 五招之内搞定任何JSON数组

写在前面原文  http://www.iamxiarui.com/2016/08/30/android:用gson-五招之内搞定任何json数组/ 关于GSON的入门级使用,这里...

Gson的使用——Gson解析json数组并展示在ListView控件上

类似于解析json数据的框架有很多,常用的就是Gson,使用起来特别的方便,同时,还拥有很好的可操作性,今天就来说说怎么用Gson去解析一个json数组。首先看看数据源{ "a": [ ...

用Gson解析纯json数组的方法总结

用Gson解析纯json数组

android开发之 Gson 解析json数组

为了纪念两天解决的一个问题。 刚刚接触到android的volley 框架,使用jsonarrayrequest的时候,得到jsonarray 问高手说可以用Gson 来解析于是开始了两天的钻研之路...

Gson操作json字符串和json对象数组

引入gson-1.4.jar,(挺蛋疼的,不想自己研究这玩意,寻思网上直接找现成的Demo,结果没有我想要的东西) Gson中重要的几个核心类: Gson、JsonParser、JsonObjec...

JSON解析 Gson解析方式 JSONObject JSONArray

直接上代码 主程序代码: package com.cc.mygson; import java.net.Proxy.Type; import org.json.JSONArray; im...
  • v587ge
  • v587ge
  • 2015年10月13日 01:17
  • 2165

GSON解析json数据详解

GSON JSON 介绍 Gson 下载 Gson 解析 和 格式化 Gson 格式化 Gson 解析 Json 介绍 Json 全称 JavaS...
  • DQ1005
  • DQ1005
  • 2016年06月13日 16:13
  • 10812
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gson解析json对象,json数组
举报原因:
原因补充:

(最多只允许输入30个字)