1、概念

Gson是谷歌发布的一个json解析框架

2、如何获取

github:https://github.com/google/gson

android studio使用

compile 'com.google.code.gson:gson:2.7'

查看 最新版本号

下载最新的jar包 ,http://search.maven.org/#search%7Cga%7C1%7Ccom.google.code.gson

3、基于Gson封装的简单工具类JsonUtil

package com.zyj.app.util;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ${zyj} on 2016/8/24.
*/
public class JsonUitl {
private static Gson mGson = new Gson();
/**
* 将json字符串转化成实体对象
* @param json
* @param classOfT
* @return
*/
public static Object stringToObject( String json , Class classOfT){
return  mGson.fromJson( json , classOfT ) ;
}
/**
* 将对象准换为json字符串 或者 把list 转化成json
* @param object
* @param <T>
* @return
*/
public static <T> String objectToString(T object) {
return mGson.toJson(object);
}
/**
* 把json 字符串转化成list
* @param json
* @param cls
* @param <T>
* @return
*/
public static <T>  List<T> stringToList(String json ,Class<T> cls  ){
Gson gson = new Gson();
List<T> list = new ArrayList<T>();
JsonArray array = new JsonParser().parse(json).getAsJsonArray();
for(final JsonElement elem : array){
list.add(gson.fromJson(elem, cls));
}
return list ;
}
}

4、JsonUtil的简单测试

4.1、定义bean对象

package com.zyj.app.bean;
/**
* Created by ${zyj} on 2016/9/5.
*/
public class Me {
String name ;
String age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}

4.2、测试代码

        List<Me> list = new ArrayList<>() ;
Me me1 = new Me() ;
me1.setName( "name111");
me1.setAge( "age111");
Me me2 = new Me() ;
me2.setName( "name222");
me2.setAge( "age222");
Me me3 = new Me() ;
me3.setName( "name333");
me3.setAge( "age333");
list.add( me1 ) ;
list.add( me2 ) ;
list.add( me3 ) ;
//测试一:把list对象转换成json字符串
String json1 = JsonUitl.objectToString( list  ) ;
//日志打印
KLog.d( "测试一 " + json1 );
//测试二:把json字符串转化成list集合
List<Me> listMe = JsonUitl.stringToList( json1 , Me.class ) ;
//日志打印
for ( Me meTest : listMe ){
KLog.d( "测试二 " + "name: " + meTest.getName() + " age: " + meTest.getAge() );
//测试三 : 把对象转化成json字符串
String jsonTest3 = JsonUitl.objectToString( meTest ) ;
KLog.d( "测试三 " + jsonTest3  );
}

4.3、测试结果

测试一 [{"age":"age111","name":"name111"},{"age":"age222","name":"name222"},{"age":"age333","name":"name333"}]
测试二 name: name111 age: age111
测试三 {"age":"age111","name":"name111"}
测试二 name: name222 age: age222
测试三 {"age":"age222","name":"name222"}
测试二 name: name333 age: age333
测试三 {"age":"age333","name":"name333"}

  

  

  

  

Android Gson的使用总结相关推荐

  1. Android Gson在Kotlin data class中的使用

    文章目录 Android Gson在Kotlin data class中的使用 基本使用 NEP 空指针异常问题 空指针异常产生的原因 空安全失效问题 字段全有默认值 字段部分有默认值 解决问题 使用 ...

  2. Android Gson使用详解

    Json 是一种文本形式的数据交换格式,比 xml 更为轻量.Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 FastJson 两种,这里要介绍的是 Gson ...

  3. android gson工具包,Android Study 之 彻底解决 Gson解析 异常

    > LZ-Say:大风呼呼的刮,就好像妖精要来的前奏一样~ > > 前言 开发过程中,App常用的接收参数的时候,几乎大部分都是以json格式为主,那么有关解析json的方式有很多, ...

  4. Android Gson 操作

    JSON序列化后的数据不带类名与名命空间,所以这两个服务端跟客户端可以不对应,需要保证字段对应即可 Asp.net MVC端 using System; using System.Collection ...

  5. Android—Gson原理解析

    JsonElement 抽象类 代表json串的某一个元素 某一个元素: JsonObject JsonArray JsonPrimitive(基本类型) JsonNull JsonElement的四 ...

  6. Android Gson解析json详解

    目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),解析速度最快的是Gson,下载地址:https://co ...

  7. Android Gson深入分析

    目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),解析速度最快的是Gson,下载地址:https://co ...

  8. Android Gson类型转换错误解决 com.google.gson.internal.LinkedTreeMap

    com.google.gson.internal.LinkedTreeMap不能转换到我的类(com.google.gson.internal.LinkedTreeMap cannot be cast ...

  9. Android Gson总结

    文章目录 Gson总结 依赖库 基本API介绍 基本用法 生成Json字符串 toJson & fromJson 序列化 toJson 反序列化操作 fromJson Json数组与Java数 ...

最新文章

  1. python3连接oracle教程,Pycharm中Python3连接Oracle
  2. js中使用进行字符串传参
  3. Android零基础入门第20节:CheckBox和RadioButton使用大全
  4. Linux设置root默认密码
  5. 前端必看 | 2D游戏化互动入门基础知识
  6. 校外分散实习(14)
  7. Live Meeting 音频视频使用端口设置
  8. C# 理解Thread.Sleep()方法 ----转帖
  9. HADOOP docker(二):HDFS 高可用原理
  10. 铁路订票系统的简单设计(转自云风)
  11. QuickCHM 2.6“不支持此接口”错误的解决
  12. 区块链项目_数字资产控股DAH_清算结算
  13. Pytorch 了解强化学习(RL)
  14. 【PDF转换图片】如何把pdf文件转换成图片?如何把批量pdf文件转换成图片?如何把多目录批量pdf文件转换成图片?如何pdf文件转换成图片不失真不损失清晰度?今天教方法
  15. linux下文件的total是啥,linux中,ls -l命令显示的total的含义。
  16. matlab 直接馈通,s函数直接馈通
  17. 查看 Windows 10 快捷键 占用 VSCode 多行编辑 ctrl alt uparrow
  18. 2019年第一届长安杯解析,深入科普,理清思路,流量部分不太会,其他部分基本有详细解。
  19. 长轮询和短轮询的区别
  20. Matlab图形绘制(三)图形样式、标注、题字;fplot函数

热门文章

  1. 四十六、深入Java的网络编程(下篇)
  2. 二十三、Python数据建模(上),禁止转载
  3. 五、开始Github和码云之旅,新手如何上路
  4. 六十一、分析Springboot中的项目结构介绍
  5. NLP技术中的Tokenization
  6. 工程之道,深度学习的工业级模型量化实战
  7. 实录分享 | 计算未来轻沙龙:揭秘AutoML技术(视频 + PPT)
  8. 貌离神合的RNN与ODE:花式RNN简介
  9. 深度学习入门之PyTorch学习笔记:多层全连接网络
  10. HDU 1556 前缀和 树状数组 线段树