gsons
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的更多相关文章
- android -volley-请求数据
private List<gson.DataBean>arrGson;//请求的数据 //请求数据的方法 public void initData() { RequestQueue mQu ...
随机推荐
- C语言之共用体
最近在复习C语言,特再次记录: 有时需要将几种不同类型的变量存放到同一段内存单元中.如一个int.float.char放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...
- activity 和 生命周期 :流程
activity是android的一个基本的组件.讨论生命周期,taskstack等等的话题的时候.就不得不去看一下android framework层的源码了. 生命周期,实际就是系统调用andro ...
- Altium Designer 画"差分线"
Altium Designer 画"差分线" 如何在 Altium Designer 中快速进行差分对走线1:在原理图中让一对网络前缀相同,后缀分别为_N 和_P,并且加上差分队对 ...
- Oracle学习系列6
Oracle学习系列6 ************************************************************************************ 删除约 ...
- ASP.NET中数据邦定效率问题的一点看法 - 转载(自由的天空)
在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...
- java mvc web 项目web.xml头改错了,死活加载不上springMvc的jar
Description Resource Path Location TypeOne or more constraints have not been satisfied. ...
- Maven学习8-使用Maven构建多模块项目
在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问 层).service(业务逻辑层).web(表现层),这样分层 ...
- 严格模式use strict
严格模式主要有以下限制: 变量必须声明后再使用函数的参数不能有同名属性,否则报错不能使用with语句不能对只读属性赋值,否则报错不能使用前缀0表示八进制数,否则报错不能删除不可删除的属性,否则报错不能 ...
- android学习笔记54——ContentProvider
ContentProvider ContentProvider用于实现数据共享. ContentProvider是不同应用程序之间进行数据交换的标准API,其以某种Uri的形式对外提供数据,允许其他应 ...
- 给app增加itunes文件共享支持的功能
从网上查找的一些说法来看,是给app的plist配置文件中增加UIFileSharingEnabled,我后面查苹果官网的plist键值说明文档,也是这样说. 但实际上直接通过XCode打开plist ...