• FastJson框架解析Json


    一、简介

    FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!

    FastJSON是阿里巴巴的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址:https://github.com/alibaba/fastjson

    二、FastJson使用

      FastJson对于json格式字符串的解析主要用到了下面三个类: 

    • JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换
    • JSONObject:fastJson提供的json对象 
    • JSONArray:fastJson提供json数组对象

    三者继承关系如下:

    public abstract class JSON implements JSONStreamAware, JSONAware {...}
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    public class JSONArray extends JSON implements List<Object>, Cloneable, RandomAccess, Serializable {
    private static final long serialVersionUID = 1L;
    private final List<Object> list;
    protected transient Object relatedArray;
    protected transient Type componentType;
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    public class JSONObject extends JSON implements Map<String, Object>, Cloneable, Serializable, InvocationHandler {
    private static final long serialVersionUID = 1L;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;
    private final Map<String, Object> map;

    1、引入依赖

    <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.51</version>//选择合适版本即可
    </dependency>

    2、常用方法

    抽象类JSON中的常用方法(部分):
    public static Object parse(String text);//将字符串解析为对象
    public static JSONArray parseArray(String text);//将字符串解析为JSONArray
    public static <T> List<T> parseArray(String text, Class<T> clazz);//将字符串解析为List
    public static List<Object> parseArray(String text, Type[] types);//将字符串解析为List
    public static <T> T parseObject(String text, Class<T> clazz);//将字符串解析为对象
    public static JSONObject parseObject(String text)//将字符串解析为JSONObeject
    public static Object toJSON(Object javaObject)//
    public static String toJSONString(Object object)//将对象转换为JSONString

    类JSONObject中的常用方法(部分):
    public boolean containsKey(Object key)//是否包含指定对象Key,返回布尔值
    public boolean containsValue(Object value)//是否包含指定对象Value,返回布尔值
    public Object get(Object key)//通过对象Key,返回对象
    public Boolean getBoolean(String key)//通过字符串Key,返回布尔值
    public int getIntValue(String key)//通过指定字符串Key,返回int
    public JSONArray getJSONArray(String key)//通过指定字符串Key,返回JSONArray
    public JSONObject getJSONObject(String key)//通过指定字符串Key,返回JSONObject
    public <T> T getObject(String key, Class<T> clazz)//通过指定字符串Key和类对象,返回指定的对象


    类JSONArray中的常用方法(部分):
    public boolean add(Object e)//添加指定对象,添加成功返回true,否则返回false
    public boolean contains(Object o)//是否包含指定对象,包含返回true,不包含返回false
    public Object get(int index)//通过索引返回对象
    public Boolean getBoolean(int index)//通过索引返回布尔值
    public Long getLong(int index)//通过索引返回Long
    public JSONObject getJSONObject(int index)//通过索引返回JSONObject
    public Object remove(int index)//通过索引删除指定对象,并返回删除的对象
    public Object set(int index, Object element)//设置指定索引的元素,返回原有对象
    public int size() //返回JSONArray的大小
    
    

     实例代码可抽取为简单工具类FastJsonUtils

    package edu.tyut;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.TypeReference;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * FastJson工具类
     */
    public class FastJsonUtils {
    
    
        /**
         * 功能描述:把JSON数据转换成指定的java对象
         * @param jsonData JSON数据
         * @param clazz 指定的java对象
         * @return 指定的java对象
         */
        public static <T> T getJsonToBean(String jsonData, Class<T> clazz) {
            return JSON.parseObject(jsonData, clazz);
        }
    
        /**
         * 功能描述:把java对象转换成JSON数据
         * @param object java对象
         * @return JSON数据
         */
        public static String getBeanToJson(Object object) {
            return JSON.toJSONString(object);
        }
    
        /**
         * 功能描述:把JSON数据转换成指定java对象的List
         * @param jsonData JSON数据
         * @param clazz 指定的java对象
         * @return List<T>
         */
        public static <T> List<T> getJsonToList(String jsonData, Class<T> clazz) {
            return JSON.parseArray(jsonData, clazz);
        }
    
        /**
         * 功能描述:把JSON数据转换成较为复杂的List<Map<String, Object>>
         * @param jsonData JSON数据
         * @return List<Map<String, Object>>
         */
        public static List<Map<String, Object>> getJsonToListMap(String jsonData) {
            return JSON.parseObject(jsonData, new TypeReference<List<Map<String, Object>>>() {
            });
        }
    }
  • 相关阅读:
    MVC的异步,Entity Framework的异步,ADO.NET的异步,
    IE10、IE11 无法写入Cookie
    jQuery在IE浏览器上的html()报错 return !noData || noData !== true && elem.getAttribute("classid") === noData;
    站点、应用程序和虚拟目录详细介绍
    javascript中的一些核心知识点以及需要注意的地方
    $.browser.msie 报错 null
    【转】虚拟机安装Ubuntu的上网设置(有线网络和无线网络)
    Linux编程(获取系统时间)
    【Java】解析xml
    【Java】多线程
  • 原文地址:https://www.cnblogs.com/turbosha/p/9961271.html
Copyright © 2020-2023  润新知