gson解析json
来源:互联网 发布:adobe cc2017 mac破解 编辑:程序博客网 时间:2024/05/22 05:03
json介绍
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。现在大部分APP都使用json给前端返回数据。
gson包
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
几种常见的json数据如何解析成java对象
如果用的Android Sutdio开发,可以通过在线引用库的方式。在project/app/build.gradle文件里面的dependencies下加入一句代码:
compile 'com.google.code.gson:gson:2.8.0'
gradle会默认从Jcenter Maven仓库获取aar文件。
解析对象
我们现在有一个json字符串:”{‘name’:’Ansen’, ‘age’:20}”,有两个属性name跟age,我们可以写一个实体类User来对应.重写了toString方法。输出对象的时候会输出所有属性。而不是一个hash值。
public class User { private String name;//姓名 private int age;//年龄 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; }}
使用gson包把json字符串转成User对象一句代码就搞定,这里用的gson对象是MainActivity的实例变量。调用fromJson方法就能转换了。
String jsonStr="{'name':'Ansen', 'age':20}";User user=gson.fromJson(jsonStr, User.class);Log.i("MainActivity","parseObject user:"+user.toString());
解析成数组
上面我们提到了json字符串转对象,在企业开发中,服务器给我们的是一个数组格式的json数据也很常见的。跟转换对象基本一样的。
String jsonStr="[{'name':'Uini', 'age':30},{'name':'Lina', 'age':10}]";List<User> users=gson.fromJson(jsonStr,new TypeToken<List<User>>() {}.getType());for(int i=0;i<users.size();i++){ Log.i("MainActivity","parseArrayList user:"+users.get(i));}
解析成Map
String jsonStr="{'1': {'name':'haha', 'age':11},'2': {'name':'nihao', 'age':22}}";Map<String, User> users = gson.fromJson(jsonStr, new TypeToken<Map<String,User>>() {}.getType());for(String key:users.keySet()){ Log.i("MainActivity","parseArrayList key:"+key+" user:"+users.get(key));}
对象解析成json字符串
我们知道把json字符串转成object,那如果想把对象转成json字符串呢?其实也很简单,gson包都给我们封装好了。我们new一个User对象,然后调用gson类的toJson方法就能把user对象转成json字符串。
User user=new User();user.setAge(111);user.setName("nime");String jsonStr=gson.toJson(user);Log.i("MainActivity","jsonStr:"+jsonStr);
运行以上代码,打印的log如下:
05-12 17:18:48.991 14135-14135/com.ansen.gson I/MainActivity: parseObject user:User{name='Ansen', age=20}05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList user:User{name='Uini', age=30}05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList user:User{name='Lina', age=10}05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList key:1 user:User{name='haha', age=11}05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList key:2 user:User{name='nihao', age=22}05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: jsonStr:{"name":"nime","age":111}
源码下载
源码下载
- JSON解析 GSON解析
- json解析:gson解析json
- Gson解析Json数据
- 使用Gson解析Json
- Android JSON Gson 解析
- 使用Gson解析json
- Gson解析json
- Gson解析Json数据
- 使用Gson解析json
- Gson解析Json步骤
- Gson解析Json
- JSON解析之-Gson
- Gson解析json
- Gson解析json
- json解析-Gson
- JSON 之GSON 解析
- gson解析json(总结)
- JSON 之GSON 解析
- 线程安全与锁优化
- ShareSDK:微信分享跳转时间过长
- Android处理崩溃 --将log保存到sd卡中或者上传服务器中
- button实现一组checkbox的全选与全不选效果
- QTextEdit文本编辑框的光标移动
- gson解析json
- 移动app如何进行自动化和探索性测试
- PSVR开发小结
- GCD使用三部曲之:基本用法
- 排序算法-09-排序1 排序 (25分)-第一部分
- Edraw Office Viewer component教程(三):将MS Word、Excel、PowerPoint嵌入到WPF应用程序中
- linux syslog
- 基于神经网络的智能RC小车(Python+OpenCV)
- C#Label、CheckBox等背景色设为透明