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. C语言之共用体

    最近在复习C语言,特再次记录: 有时需要将几种不同类型的变量存放到同一段内存单元中.如一个int.float.char放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...

  2. activity 和 生命周期 :流程

    activity是android的一个基本的组件.讨论生命周期,taskstack等等的话题的时候.就不得不去看一下android framework层的源码了. 生命周期,实际就是系统调用andro ...

  3. Altium Designer 画"差分线"

    Altium Designer 画"差分线" 如何在 Altium Designer 中快速进行差分对走线1:在原理图中让一对网络前缀相同,后缀分别为_N 和_P,并且加上差分队对 ...

  4. Oracle学习系列6

    Oracle学习系列6 ************************************************************************************ 删除约 ...

  5. ASP.NET中数据邦定效率问题的一点看法 - 转载(自由的天空)

    在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...

  6. java mvc web 项目web.xml头改错了,死活加载不上springMvc的jar

    Description    Resource    Path    Location    TypeOne or more constraints have not been satisfied.  ...

  7. Maven学习8-使用Maven构建多模块项目

    在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问 层).service(业务逻辑层).web(表现层),这样分层 ...

  8. 严格模式use strict

    严格模式主要有以下限制: 变量必须声明后再使用函数的参数不能有同名属性,否则报错不能使用with语句不能对只读属性赋值,否则报错不能使用前缀0表示八进制数,否则报错不能删除不可删除的属性,否则报错不能 ...

  9. android学习笔记54——ContentProvider

    ContentProvider ContentProvider用于实现数据共享. ContentProvider是不同应用程序之间进行数据交换的标准API,其以某种Uri的形式对外提供数据,允许其他应 ...

  10. 给app增加itunes文件共享支持的功能

    从网上查找的一些说法来看,是给app的plist配置文件中增加UIFileSharingEnabled,我后面查苹果官网的plist键值说明文档,也是这样说. 但实际上直接通过XCode打开plist ...