google的gson工具使用
google提供了一个Gson的工具,能够将.json文件转换成对象,具体使用如下:
首先需要将json对象序列号成对象,需要实现JsonDeserializer接口
import com.google.common.collect.Lists; import com.google.gson.*; import java.lang.reflect.Type; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by zhuocongbin * date 2018/6/27 */ public class ProDeserializer implements JsonDeserializer<Student> {@Override public Student deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {if (jsonElement == null) {return null; }if (!jsonElement.isJsonObject()) {return null; }JsonObject jsonObject = jsonElement.getAsJsonObject(); if (!jsonObject.has("id"))return null; int id = jsonObject.get("id").getAsInt(); String name = jsonObject.get("name").getAsString(); int age = jsonObject.get("age").getAsInt(); AddresEntity[] addresEntities = jsonDeserializationContext.deserialize(jsonObject.get("address"), AddresEntity[].class); List<AddresEntity> list = Lists.newArrayList(addresEntities); Map<Integer, AddresEntity> map = new HashMap<>(); list.forEach(addresEntity -> {map.put(addresEntity.getId(), addresEntity); }); Student student = new Student(id, name, age, map); return student; } }
import com.google.common.collect.Lists; import com.google.gson.*; import java.lang.reflect.Type; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by zhuocongbin * date 2018/6/27 */ public class ProDeserializer implements JsonDeserializer<Student> {@Override public Student deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {if (jsonElement == null) {return null; }if (!jsonElement.isJsonObject()) {return null; }JsonObject jsonObject = jsonElement.getAsJsonObject(); if (!jsonObject.has("id"))return null; int id = jsonObject.get("id").getAsInt(); String name = jsonObject.get("name").getAsString(); int age = jsonObject.get("age").getAsInt(); AddresEntity[] addresEntities = jsonDeserializationContext.deserialize(jsonObject.get("address"), AddresEntity[].class); List<AddresEntity> list = Lists.newArrayList(addresEntities); Map<Integer, AddresEntity> map = new HashMap<>(); list.forEach(addresEntity -> {map.put(addresEntity.getId(), addresEntity); }); Student student = new Student(id, name, age, map); return student; } }
这里运用了两个反序列化类
test.json文件如下
[{"id":1, "name":"te", "age":29, "address":[{"id":0, "city":"chongq" }, {"id":1, "city":"beijin" }]}, {"id":2, "name":"zhangsan", "age":90, "address":[{"id":0, "city":"chongq" }, {"id":1, "city":"beijin" }]}, {"id":3, "name":"lisi", "age":10, "address":[{"id":0, "city":"chongq" }, {"id":1, "city":"beijin" }]} ]
详情源码请看github:https://github.com/zhuocongbin/gson_demo
google的gson工具使用相关推荐
- 使用google.gson工具时-JSON(谷歌)的使用
文章目录 1. 创建GSON的两种方法 getAsString()方法返回JsonNull异常问题解决 自定义的返回:setExclusionStrategies 公司项目中使用的实例: 用法详解参考 ...
- 通过google的gson把xml转成json
在百度上找了很久都没有找到通过google的gson把xml转成json的文档,索性自己查资料写了个小工具,基本功能在代码注释里都描述的比较详细了.由于笔者这边的数据源格式有点乱,所以代码里加了一些容 ...
- 【Java】GsonUtils(Gson 工具类)
Java Gson 工具类 import com.google.gson.*; import com.google.gson.reflect.TypeToken; import lombok.Snea ...
- Google Glass是工具不是玩具
上周,Google Glass正式开放体验购买申请,并在youtube上发布了"透过google眼镜感觉世界"的宣传视频,此外还发起"Glass Explorer&quo ...
- SEO优化工具之——Google Adwords 关键词工具
Google Adwords 关键词工具: 这是最重要的SEO工具之一,也是我最常用的工具之一. 本工具提供给Google Adwords广告商扩展.挑选关键词时使用的工具.不过不管是否登陆GOOGL ...
- 谷歌测试工具_使用Google网站优化工具进行A / B测试的指南
为了在您的网站上产生更多的转化,您必须查看流量统计信息 . Google Analytics(分析)是一项出色的服务,但只能走这么远. A / B测试背后的概念是合理的,并且已经在专业的Interne ...
- google protobuf 在线工具
google protobuf 在线工具 认识google protobuf 文章目录 google protobuf 在线工具 前言 一.gproto是什么? 二.使用步骤 1.导入proto文件 ...
- Translatium for Mac(Google在线翻译工具)
Translatium,谷歌翻译客户端 Translatium for Mac是一款Mac上强大的翻译软件,支持150多种语言和方言,支持语言输入翻译,文本翻译,并且支持相机翻译语言,Translat ...
- 十个Google关键词分析工具
十个Google关键词分析工具 (转载) LoveGoTone 收录于2010-11-22 阅读数:查看 收藏数:5 公众公开 欢迎浏览 LoveGoTone 个人图书馆中收藏的文章,想收 ...
最新文章
- 游戏开发基础:A*算法(转)
- doAcquireSharedInterruptibly
- java html entity encoding,实体“HTML.Version”的声明必须以''结尾
- OpenVINO Inference Engine之GetAvailableDevices
- FusionCharts破解版导出图片步骤
- python在数据分析的应用_Python运用于数据分析的简单教程
- java 缓存日志_Java日志缓存机制的实现(3)
- 《Android游戏开发详解》一3.7 里程碑
- Atitit 项目常用模块 非业务模块 通用技术模块 attilax大总结 理论上可行。但要限制接口方式。 不然现在很多ui与后端接口模式很多,导致组合爆炸。。。 常用模块也就100来个而已。。
- 如何用html制作博客页面,HTML个人博客页面
- 机器学习数据预处理之字符串转数字
- OpenCV空间人工智能竞赛:第一部分
- pvr格式的用什么打开_cocos2d 查看pvr图片的详细格式
- exsi rh2288hv5 驱动_华为RH2288H V5服务器windows 2012阵列卡驱动
- 【语音合成】TensorFlowTTS 中文文本转语音
- 知网查重提交论文显示服务器错误,知网查重时显示检测失败是什么原因?
- 红米3 android驱动,红米3驱动最新版
- mysql 编码错误_【分享】MySQl操作系统提示错误编码
- 8421BCD码加法的修正证明
- bootstrap自采样再理解