文档章节

FastJson工具类

Curry_M
 Curry_M
发布于 2017/04/07 15:35
字数 458
阅读 109
收藏 2
package com.pingan.common.util;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializeFilter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;

/**
 * @JSONField(serialize=false) 在属性get方法上加serialize=false可设置属性不输出 name=""
 *                             可设置序列化后的属性名称 试用场景 实体对象往协议层数据转换
 * @author Fe
 * 
 */
public class FastJson {

    public static final Logger logger = Logger.getLogger(FastJson.class);

    public static SerializeConfig mapping = new SerializeConfig();

    public static String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    static {
        mapping.put(Date.class, new SimpleDateFormatSerializer(DEFAULT_DATE_FORMAT));
        JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask();
    }

    public static <T> String toJson(T t) {
        return JSON.toJSONString(t);
    }

    public static <T> String toJson(T t, SerializeFilter filter) {
        return JSON.toJSONString(t, filter);
    }

    public static <T> String toJsonCustom(T t) {
        return JSON.toJSONString(t, mapping, SerializerFeature.WriteMapNullValue);
    }

    public static <T> T fromJson(String json, Class<T> t) {
        return (T) JSON.parseObject(json, t);
    }

    public static JSONObject fromJson(String json) {
        return JSON.parseObject(json);
    }

    public static <T> List<T> jsonToList(String json, Class<T> t) {
        return (List<T>) JSON.parseArray(json, t);
    }

    public static JSONArray jsonToList(String json) {
        return JSON.parseArray(json);
    }

    /**
     * 
     * @param object
     *            从jsonobject 目录节点
     * @param strings
     *            层次关系
     * @return
     */
    public static Object xNodes(JSONObject jsonObj, String... dirTree) {
        JSONObject deepJsonObj = jsonObj;
        int last = dirTree.length - 1;
        for (int i = 0; i < dirTree.length; i++) {
            if (deepJsonObj == null) {
                return null;
            }
            String node = dirTree[i];
            if (i == last) {
                return deepJsonObj.get(node);
            }
            deepJsonObj = deepJsonObj.getJSONObject(node);
        }
        return null;
    }

    /**
     * 
     * @param object
     *            从jsonobject 目录节点,最后一层自动增加“Text_Value”
     * @param strings
     *            层次关系
     * @return
     */
    public static Object xNodesForTV(JSONObject jsonObj, String... dirTree) {
        JSONObject testJsonObj = (JSONObject) xNodes(jsonObj, dirTree);
        if (testJsonObj != null) {
            return testJsonObj.get("Text_Value");
        }
        return null;
    }

    public static void main(String args[]) throws UnsupportedEncodingException {
        String s = FastJson.toJson(new double[] { 4, 55 });
        logger.debug(s);
        logger.debug(Md5Util.md5s("11111"));
    }
}

class User {
    private int id;
    private String name;
    private Long status;
    private Date createTime;
    private List<Hobby> hobbyList;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @JSONField(serialize = false)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @JSONField(name = "st")
    public Long getStatus() {
        return status;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public List<Hobby> getHobbyList() {
        return hobbyList;
    }

    public void setHobbyList(List<Hobby> hobbyList) {
        this.hobbyList = hobbyList;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", status=" + status + ", createTime=" + createTime
                + ", hobbyList=" + hobbyList + "]";
    }

}

class Hobby {
    private int hobbyId;
    private String hobbyName;

    public Hobby() {
    }

    public int getHobbyId() {
        return hobbyId;
    }

    public void setHobbyId(int hobbyId) {
        this.hobbyId = hobbyId;
    }

    public String getHobbyName() {
        return hobbyName;
    }

    public void setHobbyName(String hobbyName) {
        this.hobbyName = hobbyName;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: FileUpload
下一篇: AES对称加密算法
Curry_M
粉丝 1
博文 85
码字总数 83163
作品 0
浦东
程序员
私信 提问
JSON 之FastJson解析

https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 1、解析对象成json JSON.toJsonString(Object o); ---------------- JSON.toJSONString(对象); 2、将json转......

Sheamus
2015/04/13
0
0
Json那点事儿

1.JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON以key-value的形式提供了很好的读写,在web开发中之前用过xml来进行数据的交互和传输, 但xml的数据结构比较复...

陈小扁
2016/04/10
108
1
Google Gson的使用方法及JSON 技术对比

一 、各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括commons-beanutils.jar,commons-collectio...

hapier
2016/11/14
130
0
一次jdk 1.7 永久带oom信息定位

2018-11-11 线上机器永久带发生了oom,永久带oom大部分有关的就是反射,和类加载器不断新增(我是带着这个思维去找问题)。 2018-11-13 根据线上dump的堆栈信息,定位到发生oom的线程栈 2018...

年少爱追梦
11/13
0
0
对象转map 空值过滤 符号拼接

对象属性转换为map 1、空值保留(强制转换 fastJson) JSONObject jonsObject = (JSONObject)JSONObject.toJSON("类对象"); 2、空值过滤(非强制转换 fastJson) JSONObject jsonObject = JSON.p......

最佳的时间就是现在
06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
15
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
11
0
my.ini

1

architect刘源源
今天
10
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
11
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部