博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON解析的方式
阅读量:6892 次
发布时间:2019-06-27

本文共 6400 字,大约阅读时间需要 21 分钟。

hot3.png

JSON解析之传统的JSON解析

1、生成json字符串

public static String createJsonString(String key, Object value) {        JSONObject jsonObject = new JSONObject();        jsonObject.put(key, value);        return jsonObject.toString();}

2、解析JSON字符串 分为以下三种情况,一个JavaBean,一个List数组,一个嵌套Map的List数组:

import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONObject;import com.android.myjson.domain.Person;/** * 完成对json数据的解析 *  */public class JsonTools {    public static Person getPerson(String key, String jsonString) {        Person person = new Person();        try {            JSONObject jsonObject = new JSONObject(jsonString);            JSONObject personObject = jsonObject.getJSONObject("person");            person.setId(personObject.getInt("id"));            person.setName(personObject.getString("name"));            person.setAddress(personObject.getString("address"));        } catch (Exception e) {            // TODO: handle exception        }        return person;    }    public static List getPersons(String key, String jsonString) {        List list = new ArrayList();        try {            JSONObject jsonObject = new JSONObject(jsonString);            // 返回json的数组            JSONArray jsonArray = jsonObject.getJSONArray(key);            for (int i = 0; i < jsonArray.length(); i++) {                JSONObject jsonObject2 = jsonArray.getJSONObject(i);                Person person = new Person();                person.setId(jsonObject2.getInt("id"));                person.setName(jsonObject2.getString("name"));                person.setAddress(jsonObject2.getString("address"));                list.add(person);            }        } catch (Exception e) {            // TODO: handle exception        }        return list;    }    public static List getList(String key, String jsonString) {        List list = new ArrayList();        try {            JSONObject jsonObject = new JSONObject(jsonString);            JSONArray jsonArray = jsonObject.getJSONArray(key);            for (int i = 0; i < jsonArray.length(); i++) {                String msg = jsonArray.getString(i);                list.add(msg);            }        } catch (Exception e) {            // TODO: handle exception        }        return list;    }    public static List> listKeyMaps(String key,            String jsonString) {        List> list = new ArrayList>();        try {            JSONObject jsonObject = new JSONObject(jsonString);            JSONArray jsonArray = jsonObject.getJSONArray(key);            for (int i = 0; i < jsonArray.length(); i++) {                JSONObject jsonObject2 = jsonArray.getJSONObject(i);                Map map = new HashMap();                Iterator iterator = jsonObject2.keys();                while (iterator.hasNext()) {                    String json_key = iterator.next();                    Object json_value = jsonObject2.get(json_key);                    if (json_value == null) {                        json_value = "";                    }                    map.put(json_key, json_value);                }                list.add(map);            }        } catch (Exception e) {            // TODO: handle exception        }        return list;    }}

JSON解析之GSON

1、生成JSON字符串

import com.google.gson.Gson;public class JsonUtils {    public static String createJsonObject(Object obj) {        Gson gson = new Gson();        String str = gson.toJson(obj);        return str;    }}二、解析JSONimport java.util.ArrayList;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;;public class GsonTools {    public GsonTools() {        // TODO Auto-generated constructor stub    }    /**     * @param      * @param jsonString     * @param cls     * @return     */    public static  T getPerson(String jsonString, Class cls) {        T t = null;        try {            Gson gson = new Gson();            t = gson.fromJson(jsonString, cls);        } catch (Exception e) {            // TODO: handle exception        }        return t;    }    /**     * 使用Gson进行解析 List     *      * @param      * @param jsonString     * @param cls     * @return     */    public static  List getPersons(String jsonString, Class cls) {        List list = new ArrayList();        try {            Gson gson = new Gson();            list = gson.fromJson(jsonString, new TypeToken>() {            }.getType());        } catch (Exception e) {        }        return list;    }    /**     * @param jsonString     * @return     */    public static List getList(String jsonString) {        List list = new ArrayList();        try {            Gson gson = new Gson();            list = gson.fromJson(jsonString, new TypeToken>() {            }.getType());        } catch (Exception e) {            // TODO: handle exception        }        return list;    }    public static List> listKeyMaps(String jsonString) {        List> list = new ArrayList>();        try {            Gson gson = new Gson();            list = gson.fromJson(jsonString,                    new TypeToken>>() {                    }.getType());        } catch (Exception e) {            // TODO: handle exception        }        return list;    }}

JSON解析之FastJSON

import java.util.ArrayList;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;public class JsonTool {    public static  T getPerson(String jsonstring, Class cls) {        T t = null;        try {            t = JSON.parseObject(jsonstring, cls);        } catch (Exception e) {            // TODO: handle exception        }        return t;    }    public static  List getPersonList(String jsonstring, Class cls) {        List list = new ArrayList();        try {            list = JSON.parseArray(jsonstring, cls);        } catch (Exception e) {            // TODO: handle exception        }        return list;    }    public static  List> getPersonListMap1(            String jsonstring) {        List> list = new ArrayList>();        try {            list = JSON.parseObject(jsonstring,                    new TypeReference>>() {                    }.getType());        } catch (Exception e) {            // TODO: handle exception        }        return list;    }}

三种解析方式中FastJson是效率最高的

转载于:https://my.oschina.net/u/3668429/blog/1926757

你可能感兴趣的文章
Mysql数据库恢复,Ibdata1文件删除数据恢复成功
查看>>
Maven学习总结(11)——Maven Tomcat7自动部署
查看>>
Shell 中常用的sqlplus 代码段
查看>>
Maven学习总结(1)——Maven入门
查看>>
Linux java环境配置
查看>>
mysql ====查询命令介绍(5)
查看>>
Ffmpeg,mencoder视频格式转换
查看>>
【经验收集】完全卸载SQLServer 2008 R2的步骤
查看>>
Spring Boot 项目启动顺序以及常见注解作用
查看>>
java基础(2)
查看>>
zabbix安装界面报连接不到数据
查看>>
一首Python的打油诗
查看>>
pjsip 同时使用多套音频设备
查看>>
DevOps:怎么实现源代码注释和系统文档的自动化更新?
查看>>
make 中的路径搜索(十二)
查看>>
zabbix agent 端主动注册
查看>>
初识Mysql(二)
查看>>
监控系统的状态
查看>>
Samba文件共享服务
查看>>
Check Point SMB 操作手册
查看>>