Use Gson to quickly parse Json data

Interacting with the server to obtain data, the Json format is a relatively common and simple form. Let's use Gson to quickly parse the data:
1): Import json-jar.jar in the libs folder of the android project (the detailed guide package is not Long -winded)
2): Encapsulate tool class JsonUtil.java

package com.xingfu.util;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
/**
 * © 2015  
 * 名称:JsonUtil.java 
 * 描述:json处理类.
 *
 * @author 孤狼
 * @version v1.0
 * @date:2015-01-17 下午01:52:13
 *
 */
public class JsonUtil {

    /**
     * 
     * 描述:将对象转化为json.
     * @param list
     * @return
     */
    public static String toJson(Object src) {
        String json = null;
        try {
            GsonBuilder gsonb = new GsonBuilder();
            Gson gson = gsonb.create();
            json = gson.toJson(src);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return json;
    }

    /**
     * 
     * 描述:将列表转化为json.
     * @param list
     * @return
     */
    public static String toJson(List<?> list) {
        String json = null;
        try {
            GsonBuilder gsonb = new GsonBuilder();
            Gson gson = gsonb.create();
            json = gson.toJson(list);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return json;
    }

    /**
     * 
     * 描述:将json转化为列表.
     * @param json
     * @param typeToken new TypeToken<ArrayList<?>>() {};
     * @return
     */
    public static List<?> fromJson(String json,TypeToken typeToken) {
        List<?> list = null;
        try {
            GsonBuilder gsonb = new GsonBuilder();
            Gson gson = gsonb.create();
            Type type = typeToken.getType();
            list = gson.fromJson(json,type);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

    /**
     * 
     * 描述:将json转化为对象.
     * @param json
     * @param clazz
     * @return
     */
    public static Object fromJson(String json,Class clazz) {
        Object obj = null;
        try {
            GsonBuilder gsonb = new GsonBuilder();
            Gson gson = gsonb.create();
            obj = gson.fromJson(json,clazz);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}

3): Example of use:
1. Parse into object object
a > Json data: json

{
    "user_id": 520,
    "user_name": "幸福",
    "user_age": 21,
    "user_logo": "http://www.xingfu.com//5456sdgdf5544.jpg",
    "user_class": "一(三)班",
    "user_school": "中国社会科学院"
}

b" Encapsulation entity class: UserBean.java is consistent with the Json data field

public class UserBran {
    public int user_id;
    public String user_name;
    public int user_age;
    public String user_logo;
    public String user_class;
    public String user_school;
}

c" Parse data:
UserBean userBean=JsonUtil.fromJson(json.toString, UserBean.class);
d" Fill data:
tv.setText(userBean.user_name); etc.
Second .. Parse into List

[{
    "user_id": 520,
    "user_name": "幸福",
    "user_age": 21,
    "user_logo": "http://www.xingfu.com//5456sdgdf5544.jpg",
    "user_class": "一(三)班",
    "user_school": "中国社会科学院"
},
{
    "user_id": 220,
    "user_name": "幸运",
    "user_age": 25,
    "user_logo": "http://www.xingfu.com//gdfgdgsdgdf5544.jpg",
    "user_class": "一(二)班",
    "user_school": "中国社会科学院"
},{
    "user_id": 440,
    "user_name": "天真",
    "user_age": 41,
    "user_logo": "http://www.xingfu.com//fg56sdgdf5544.jpg",
    "user_class": "一(四)班",
    "user_school": "中国社会科学院"
}]

b" Parse data:

TypeToken typeToken=new TypeToken<ArrayList<UserBean>>() {};
ArrayList<UserBean> list=JsonUtil.fromJson(json.toString,typeToken);

c "fill data:
listView.setAdapter(new CommunAdapter(this,list));and so on
4): analysis of complex data
a" Json nested data, json

{
    "user_id": 520,
    "user_name": "幸福",
    "user_age": 21,
    "user_logo": "http://www.xingfu.com//5456sdgdf5544.jpg",
    "user_class": "一(三)班",
    "user_school": "中国社会科学院",
     "data": {
        "number": 200,
        "love_gril": "丽丽"
    }
}

b": Just encapsulate the entity class as:

public class UserBran {
    public int user_id;
    public String user_name;
    public int user_age;
    public String user_logo;
    public String user_class;
    public String user_school;
    public MoreData data;
    public class MoreData {
        public int number;
        public String love_gril;
    }
}

c" Parse data:

UserBean userBean=JsonUtil.fromJson(json.toString,UserBean.class);

This parsing method is more convenient and concise than traditional parsing:
Summary steps:
1. Convert the acquired Json data into String type
2. Encapsulate the entity class (all the fields used are consistent with the fields in Json)
3. Call the tool class to parse Data
4. Fill data into the interface

The demo instance will be uploaded later...

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325408983&siteId=291194637