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. PHP正则表达式的快速学习方法

    1.入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或 ...

  2. 由STL所想到的 C++显示调用析构函数

    在STL中的容器中的析构函数中,会经常调用destroy()这个函数 在STL中  destroy()被重载了 这点在这里到不去讨论 这里贴最简单的那个版本 template<class T&g ...

  3. Android——数据库相关(课堂整理)

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  4. SQLite语句练习题

    1. 查询Student表中的所有记录的Sname.Ssex和Class列. 2. 查询教师所有的单位即不重复的Depart列. 3. 查询Student表的所有记录. 4. 查询Score表中成绩在 ...

  5. 億万笑者 - Radwimps

    億万笑者 作曲:野田洋次郎 作词:野田洋次郎 明日に希望を持った者だけに 絶望があるんだ何かを信じた者だけに 裏切りはあるんだ勇者だけに与えられた 名誉の負傷とでも言うのかそれにしてはずいぶんと 割に ...

  6. IIS-反向代理

    测试环境:Windows10.IIS/10.0 1.安装ARR.URL Rewrite(URL重写工具2.0) 注意英文和中文环境的对应: Application Request Routing 对应 ...

  7. java初探/java读取文件

    import java.io.*; import java.util.Arrays; public class WriteText { public static void main(String[] ...

  8. python3_phantomJS_test

    phantomJS和selenium差不多,几乎不相上下,使用会麻烦一点,但是比selenium快很多: # !/usr/bin/python3.4 # -*- coding: utf-8 -*- f ...

  9. [Eclipse] - 集成JBoss7热加载和自动发布

    使用Eclipse + JBoss开发时,总是要重启项目或JBoss,烦人.下面方法可以很简单的实现Eclipse + JBoss热加载和自动发布. 我的环境是JBoss 7.1.1 Final 1) ...

  10. 文件hash数据库

    unit YxdDB; interface uses Windows, Classes, SysUtils, SyncObjs; type TYXDDBValue = packed record Si ...