gson简单教程(一)
来源:互联网 发布:mac arp 嗅探工具dmg 编辑:程序博客网 时间:2024/05/01 17:53
终于做到开发的位置了,哈哈哈,公司的项目很大,省级项目,至于是哪个方面的,那就不方便透露了.这个项目中很多我之前未接触到的.首先是gson,他就是谷歌的一个json的项目罢了.
这里我只注重应用,不讲原理,有兴趣可以自己研究.
第一步:将gson进行序列化和反序列化,项目中,只把int,long,double序列化了.
public class IntegerDefault0Adapter implements JsonSerializer<Integer>, JsonDeserializer<Integer> {@Overridepublic Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { if (json.getAsString().equals("") || json.getAsString().equals("null")) {//定义为int类型,如果后台返回""或者null,则返回0 return null; } } catch (Exception ignore) { } try { return json.getAsInt(); } catch (NumberFormatException e) { throw new JsonSyntaxException(e); }}@Overridepublic JsonElement serialize(Integer src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src);}}
2.注册适配器 ,项目中这里被封装成util
public class GsonUtil {static Gson gson;public static Gson getGson(){ if(gson == null){ gson= buildGson(); } return gson;}/** * 增加后台返回""和"null"的处理 * 1.int=>0 * 2.double=>0.00 * 3.long=>0L * * @return */public static Gson buildGson() { if (gson == null) { gson = new GsonBuilder() .registerTypeAdapter(Integer.class, new IntegerDefault0Adapter()) .registerTypeAdapter(int.class, new IntegerDefault0Adapter()) .registerTypeAdapter(Double.class, new DoubleDefault0Adapter()) .registerTypeAdapter(double.class, new DoubleDefault0Adapter()) .registerTypeAdapter(Long.class, new LongDefault0Adapter()) .registerTypeAdapter(long.class, new LongDefault0Adapter()) .create(); } return gson;}}
3.利用其formjson方法获取
这是转载另一个博客的文章:
Gson提供了fromJson()方法来实现从Json相关对象到Java实体的方法。
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
先来看第一种:
比如json字符串为:[{“name”:”name0”,”age”:0}]
Person person = gson.fromJson(str, Person.class);
提供两个参数,分别是json字符串以及需要转换对象的类型。
第二种,转换成列表类型:
List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
调试注意:
经过Gson解析成为map的数据,经常需要通过map.get(key)获取类型为Object的值,我们常需要将Object进行强制转换,转换为我们需要的类型。这里注意,若我们想将整形数字1存入json串,经gson解析后,可能会变成1.0,这样我们只能使用Double类对其进行强转,再使用Double类型的intValue()方法将其转为整形。
0 0
- gson简单教程(一)
- Gson使用简单教程
- Gson的简单使用(一)
- 详解Gson使用(一)简单对象转化
- 详解Gson使用(一)简单对象转化
- Gson 教程
- Json实践(一):fastjson和gson简单效率测试
- Gson使用一(Gson)
- Gson使用教程
- Google Gson官方教程
- GSON 使用教程
- Gson 解析教程
- Google Gson简明教程
- Gson 解析教程
- Gson 解析教程
- Gson 详细解析教程
- Gson 解析教程
- Gson 解析教程
- Android使用SQLiteOpenHelper实现离线浏览
- Oracle之利用iscsi构建RAC共享存储测试
- <spark>RDD初识
- nginx proxy_cache 批量清理脚本
- BZOJ 1022 Anti-SG游戏
- gson简单教程(一)
- Política de Privacidade
- 1050. 螺旋矩阵(25)
- 关于studio 代码管理(svn or git)
- 【网络流】HDU 1532 Drainage Ditches(最大流Ford-Fulkersson)+HDU 3549 Flow Problem(最大流Dinic算法)
- keepalived+nginx双机热备+负载均衡
- 1091. Acute Stroke
- jfinal的初识及感悟
- virtualbox 在WIN10系统下与ubuntu实现文件夹共享