Gson的简单使用
程序员文章站
2024-03-16 08:35:10
...
Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。而JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,广泛应用于各种数据的交互中,尤其是服务器与客户端的交互。
- Serialization:序列化,使Java对象到Json字符串的过程。
- Deserialization:反序列化,字符串转换成Java对象。
- JSON数据中的JsonElement有下面这四种类型:
- JsonPrimitive —— 例如一个字符串或整型
- JsonObject—— 一个以 JsonElement 名字(类型为 String)作为索引的集合。也就是说可以把 JsonObject 看作值为 JsonElement 的键值对集合。
- JsonArray—— JsonElement 的集合。注意数组的元素可以是四种类型中的任意一种,或者混合类型都支持。
- JsonNull—— 值为null
Gson中的一些注解
1 @SerializedName注解 -该注解能指定该字段在JSON中对应的字段名称
2 @Expose注解 -该注解能够指定该字段是否能够序列化或者反序列化,默认的是都支持(true)。
需要注意的通过 builder.excludeFieldsWithoutExposeAnnotation()方法是该注解生效。
[@SerializedName -- GsonBuilder/Gson]
用于序列化时或反序列化时, 改变属性的名称
value : 序列化时的属性的名称,默认是属性本身
alternate: 是反序列化时 属性的别名
public class SerializeNameGson {
private String name;
@SerializedName("ema")
private String email;
@SerializedName(value = "MOBILE", alternate = {"mobile","phone"})
private String mobile;
}
private Gson gson = new Gson();
/**
* {"name":"A","ema":"[email protected]","MOBILE":"12035"}
* SerializeNameGson(name=A, [email protected], mobile=12035)
* {"name":"A","ema":"[email protected]","MOBILE":"12035"}
* SerializeNameGson(name=A, [email protected], mobile=120356)
*/
@Test
public void testSerializeNameGson(){
SerializeNameGson e = new SerializeNameGson("A","[email protected]","12035");
// json 序列化
String json = gson.toJson(e);
System.out.println(json);
// json 反序列化
SerializeNameGson u = gson.fromJson(json,SerializeNameGson.class);
System.out.println(u);
//GsonBuilder 序列化
gson = new GsonBuilder().create();
json = gson.toJson(e);
System.out.println(json);
// json 反序列化 改成别名的形式
String jsons = "{\"name\":\"A\",\"ema\":\"[email protected]\",\"mobile\":\"120356\"}";
u = gson.fromJson(jsons,SerializeNameGson.class);
System.out.println(u);
}
上一篇: 441. 排列硬币
推荐阅读
-
Gson的简单使用
-
Gson的使用-2
-
完成该操作所需的数据还不可使用 博客分类: AJAX
-
Gson的TypeToken使用
-
swing(三)----一个简单的聊天程序 博客分类: java SwingSocketJava.netthread
-
gson的使用分享
-
swing(三)----一个简单的聊天程序 博客分类: java SwingSocketJava.netthread
-
关于setInterval定时器的使用示例 博客分类: javascript JavaHTML
-
Sybase cursor的使用 SybaseSQLSQL Server
-
使用POI和DynaBean导出Excel的完整例子 ExcelApacheSQLStrutsBean