java 处理 json格式字符串,目前只使用过Google的Gson库。

pom:

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.1</version>
        </dependency>

简单包装一下:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

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

public class Gsons {
    public static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
    public static Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();

    static Gson gsonDate = new GsonBuilder().setDateFormat("yyyy-MM-dd")
            .create();
    static Gson gsonPrettyDate = new GsonBuilder().setDateFormat("yyyy-MM-dd")
            .setPrettyPrinting().create();

    static JsonParser parser = new JsonParser();

    public static String toJson(Object obj, boolean pretty) {
        return pretty ? gsonPretty.toJson(obj) : gson.toJson(obj);
    }

    public static String toJson_OnlyDate(Object obj, boolean pretty) {
        return pretty ? gsonPrettyDate.toJson(obj) : gsonDate.toJson(obj);
    }

    public static Gson getGson() {
        return gson;
    }

    public static JsonParser getParser() {
        return parser;
    }

    /**
     * TypeToken<List<Foo>> list = new TypeToken<List<Foo>>() { };
     *
     * @param json
     * @param typeToken
     * @return
     */
    public static <T> List<T> fromJson(String json, TypeToken<List<T>> typeToken) {
        Type type = typeToken.getType();

        List<T> ret = gson.fromJson(json, type);

        return ret;
    }

    public static <T> T fromJson(String json, Class<T> classOfT) {
        return gson.fromJson(json, classOfT);
    }

    public static String pretty(String json) {
        if (json == null)
            return null;

        JsonElement jsonElement = parser.parse(json);

        return gsonPretty.toJson(jsonElement);
    }
}

注意一点:

public static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();

在处理Date类日期时,最好指定格式,否则容易识别不出来。

当然,也可以不包装,直接使用。具体使用方式,看看源代码。

gsons的更多相关文章

  1. android -volley-请求数据

    private List<gson.DataBean>arrGson;//请求的数据 //请求数据的方法 public void initData() { RequestQueue mQu ...

随机推荐

  1. AngularJS从构建项目开始

    AngularJS从构建项目开始 AngularJS体验式编程系列文章,将介绍如何用angularjs构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀web前端框 ...

  2. Java和C/C++进行DES/AES密文传输(借鉴)

    Java和C/C++进行DES/AES密文传输 声明:对于新手来说很难解决的一个问题,终于在非常煎熬之后找到这篇文章,所以借鉴过来.原文地址http://blog.sina.com.cn/s/blog ...

  3. notifyDataSetInvalidated()跟notifyDataSetChanged()的区别

    public void notifyDataSetChanged(): 通过一个外部的方法控制,如果适配器的内容改变了,那么就会强制调用getView来刷新每个Item的内容.这个方法内部实现了在每个 ...

  4. Map/Reduce个人实战--生成数据测试集

    背景: 在大数据领域, 由于各方面的原因. 有时需要自己来生成测试数据集, 由于测试数据集较大, 因此采用Map/Reduce的方式去生成. 在这小编(mumuxinfei)结合自身的一些实战经历, ...

  5. 腾讯优测干货精选|Android双卡双待适配——隐藏在数据库中的那些秘密

    腾讯优测是专业的app自动化测试平台,除了提供兼容性测试,远程真机租用等多维度的测试服务,还有优分享-腾讯内部的移动研发测试干货精选~ 许多APP都希望获取用户通讯录联系人,利用通讯录关系链信息来丰富 ...

  6. 用javaScript实现 登陆记住密码功能。

    一.先写一个存取 cookie的方法. function getCookie(cookiename) { var result; var mycookie = document.cookie; var ...

  7. UDP信息接收与发送

    转载:http://www.cnblogs.com/sunev/archive/2012/08/08/2627247.html 一.摘要 总结基于C#的UDP协议的同步通信. 二.实验平台 Visua ...

  8. LA 3938 动态最大连续和 线段树

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  9. 转--Eclipse中ctrl+shift+r与ctrl+shift+t的区别

    Eclipse中ctrl+shift+r与ctrl+shift+t的区别 标签: 快捷键工作区文件搜索打开资源文件 2016-09-13 15:44 292人阅读 评论(0) 收藏 举报  分类: e ...

  10. centos网卡eth1变成eth0修改方法

    centos网卡eth1变成eth0修改方法 2013年03月29日 ⁄ Linux基础 ⁄ 共 406字 ⁄ 暂无评论 ⁄ 被围观 8,266 views+ 虚拟化中,从模板克隆出来的虚拟机网卡都会 ...