文档章节

FastJson工具类

Curry_M
 Curry_M
发布于 2017/04/07 15:35
字数 458
阅读 83
收藏 2
点赞 0
评论 0
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;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
Curry_M
粉丝 1
博文 38
码字总数 84728
作品 0
浦东
程序员
是时候重构JSON工具了

一直以来使用Gson作为JSON <-> Java数据转换的工具,只是因为Gson很好的支持泛型、支持注解、很好的设计等。再加上Google的支持,一切变得美好。不过经过测试验证,新的JSON工具组件FastJSO...

阿影 ⋅ 2011/09/21 ⋅ 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

Json那点事儿

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

陈小扁 ⋅ 2016/04/10 ⋅ 1

Google Gson的使用方法及JSON 技术对比

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

hapier ⋅ 2016/11/14 ⋅ 0

对象转map 空值过滤 符号拼接

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

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

yidasanqian/json-util

json-util Json Util Integrate Jackson、Gson And Fastjson json-util工具类整合了Jackson、Gson和Fastjson库并统一API。 Env JDK7+ Maven Feature 统一调用API,形如。目前支持的转换的列表...

yidasanqian ⋅ 05/01 ⋅ 0

第三方平台微信接口请求代码

请求微信服务器获取用户数据工具类 使用http请求,使用fastjson将jsonString转成object public class WeiXinUtil { /** 获取access_token @param code url = "https://api.weixin.qq.com/sns......

笨小孩-胆小鬼 ⋅ 2016/06/02 ⋅ 0

json处理,json、object的相互转化

用 FastJson将Json转换Bean ,用Jackson或Gson将Bean 转FastJson 要求能够支持获取Object中的Object,即支持深层嵌套的Object解析,此外json、Object间的相互转换要快速。 参考:各个JSON技术...

刘阳0292 ⋅ 2017/07/09 ⋅ 0

Fastjson 技术内幕

文章来源:http://code.alibabatech.com/wiki/display/FastJSON/Inside+Fastjson JSON协议使用方便,越来越流行。JSON的处理器有很多,为什么需要再写一个呢?因为我们需要一个性能很好的JSO...

鉴客 ⋅ 2011/08/08 ⋅ 17

新浪微博搜索结果数据抓取

项目需要在抓取新浪微博搜索结果数据,顺手做了个工具,以实现在新浪微博搜索中自动抓取配置的关键字的搜索结果。在此分享一下。 先看一下新浪微博搜索结果页面的源码: 可以看到,得到的并不...

幸福的猫猫 ⋅ 2013/03/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 15分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 22分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 26分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 28分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 31分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 36分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 48分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 今天 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部