高效正确的使用Gson
来源:互联网 发布:英语口语学习软件推荐 编辑:程序博客网 时间:2024/06/13 00:53
gson的基本用法:
反序列化:将json转换为类Gson gson = new Gson();Data i = gson.fromJson("100", Data.class); <pre class="html" name="code"> List<对象类>list=gson.fromJson(json,new TypeToken<List<Food>>() {}.getType()); <span style="color:#33cc00;">//将json转换为集合</span>
<pre class="hljs java"><code class="java">String[] strings = gson.fromJson(jsonArray, String[].class);</code> <span style="color:#33cc00;">//将json转换为数组</span>
序列化:将类转换为jsonGson gson = new Gson();String jsonNumber = gson.toJson(100); // 100
@SerializedNamer注解:将JSON字段的值解析到emailAddress中
//设置单个字段名@SerializedName("email_address")public String emailAddress;<span style="color:#33cc00;"> //当alternate数组中出现任意一个时,都可以得到正确结构</span>@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})public String emailAddress;
泛型:
直接看例子
public class UserResponse { public int code; public String message; public User data;}public class UserResponse { public int code; public String message; public Client data;}<pre class="html" name="code">public class Result<T> { public int code; public String message; public T data;}
//请求数据
<pre class="hljs php"><code class="php">Type userListType = <span class="hljs-keyword">new</span> TypeToken<Result<<span class="hljs-keyword">List</span><User>>>(){}.getType();Result<<span class="hljs-keyword">List</span><User>> userListResult = gson.fromJson(json,userListType);<span class="hljs-keyword">List</span><User> users = userListResult.data;</code>
TypeAdapter:接管序列化和反序列化过程
自定义gson解析的过程,并且会大大提高性能
Gson gson=new GsonBuilder().registerTypeAdapter(Tb.class, new TypeAdapter<Tb>() { @Override public void write(JsonWriter jsonWriter, Tb tb) throws IOException { <span style="color:#33cc00;">//将对象转为字符串</span> jsonWriter.beginObject(); jsonWriter.name("name").value(tb.name); jsonWriter.name("age").value(tb.age); jsonWriter.endObject(); } @Override public Tb read(JsonReader jsonReader) throws IOException { <span style="color:#33cc00;"> //将字符串转为类</span> Tb user = new Tb(); jsonReader.beginObject(); while (jsonReader.hasNext()) { switch (jsonReader.nextName()) { case "name": user.name = jsonReader.nextString(); break; case "age": user.age = jsonReader.nextInt(); break; } } jsonReader.endObject(); return user; } }).create(); Log.e("dddd",gson.toJson(new Tb("哈哈",20)));
注册了 TypeAdapter
之后,@SerializedName
、FieldNamingStrategy
、Since
、Until
、Expos都
失去了效果,只会调用我们实现的UserTypeAdapter.write(JsonWriter, User)
方法
0 0
- 高效正确的使用Gson
- Android Gson正确使用
- 使用Gson解析json格式的字符串的正确方式
- 使用Gson解析json格式的字符串的正确方式
- 如何正确高效使用搜索引擎
- ios高效开发-正确的使用枚举(Enum)
- iOS 高效开发-正确的使用枚举(Enum)
- 如何正确高效地使用LeetCode
- Google-Gson的使用
- gson的使用
- Gson的使用
- android gson的使用
- android Gson的使用
- Gson的使用
- gson的使用
- Gson的使用汇总
- Gson的使用
- java gson的使用
- 灰度发布入门
- MES ROCKWELL FTPC 之 备份虚拟机
- Springboot+JPA+Thymeleaf 校园博客完整小网站
- 这就是手机验证码接收平台价格最新分析
- git
- 高效正确的使用Gson
- 第k小路径
- ffmpeg/avconv 使用 vaapi 的一些测试记录
- ORACLE EXP IMP 导入导出数据 解决如何导出空表
- 优化我们的移动端网络
- Xshell5 连接linux终端 传输文件
- 最小化子序列的最大值的和
- 如何提出视频m3u8文件
- OPENNI学习实践-pcl1.6.0+vs2010环境配置以及第一个pcl程序