基于Google Json工具包解析数据
2015-10-22 15:49
656 查看
大家好,前面我写了一篇文章,标题为《Android之json数据的解析方法》,文章讲述的是使用安卓开发工具自带的工具类来解析json数据,不过在实际开发中,由于考虑到效率问题,更多的人会选择其它更为强大的解析工具,比如Google的json解析工具。本篇正是基于Google
Json工具包来讲解如何使用它来解析数据,调用toJson方法可以将其它数据类型转换成json数据类型,或者调用fromJson可以将json数据类型解析成其它数据类型。如果你没有这个工具包,那么首先你要先把它下载下来,网上提供这个工具包的下载源很多,如果你懒得去找,可以下载我上传的Google
Json解析工具包。
一、将jar包导入项目
下载下来后将该工具包导入你的项目中,直接拷贝到你工程项目的libs文件中即可。
二、使用详解
导入之后就可以使用了,接下来我们就来讲讲如何使用这个工具包,我们只介绍一些比较常见的,内容还是容易看懂的。
1.字符串数组和json字符串的相互转换
假设我们要把上面的字符串数组解析成json字符串,怎么办呢?使用这个工具包可以简单做到。解析方法如下:
在输出日志我们发现已经变成json数据了。
相反,如果我们想把上面解析到的字符串转换到一个字符串数组里面,可以这么做:
其实就简单的一句代码就搞定了,下面的循环是为了打印结果,输出日志结果如下:
2.json字符串和类的相互转换
在开发当中,最常见的恐怕就是将json数据解析出来封装到一个类里面了。
上面的这个json字符串,我们怎么把它弄到一个类里面封装起来呢?首先我们先来自定义一个Student类。
这个类非常简单,类中三个变量分别用来对应上面json字符串中的username、age和address;注意必须一一对应,也就是说Student类中的变量名称要跟json字符串中的字段名称一样,否则会获取不到,也就是解析不成功。不过你可以只写一个username,也就是说可以不用将全部字段写到类中。根据你的需要来获取就行啦。
类写好了,接下来就看怎么使用这个工具包来解析了,使用fromJson方法还是很简单就做到了,如下代码:
我们来看看输出效果。
把上面的Student类解析成字符串那就更简单了:
最后我们看看效果,发现又变回原来的json字符串了:
关于google json工具包使用方法的讲解就先到这里,后面有时间会再深入,谢谢大家的阅读!
Json工具包来讲解如何使用它来解析数据,调用toJson方法可以将其它数据类型转换成json数据类型,或者调用fromJson可以将json数据类型解析成其它数据类型。如果你没有这个工具包,那么首先你要先把它下载下来,网上提供这个工具包的下载源很多,如果你懒得去找,可以下载我上传的Google
Json解析工具包。
一、将jar包导入项目
下载下来后将该工具包导入你的项目中,直接拷贝到你工程项目的libs文件中即可。
二、使用详解
导入之后就可以使用了,接下来我们就来讲讲如何使用这个工具包,我们只介绍一些比较常见的,内容还是容易看懂的。
1.字符串数组和json字符串的相互转换
String[] day = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
假设我们要把上面的字符串数组解析成json字符串,怎么办呢?使用这个工具包可以简单做到。解析方法如下:
Gson gson = new Gson(); String jsonStr = gson.toJson(day); Log.i("mylog", "jsonStr->"+jsonStr);
在输出日志我们发现已经变成json数据了。
相反,如果我们想把上面解析到的字符串转换到一个字符串数组里面,可以这么做:
String[] weekDays = gson.fromJson(jsonStr, String[].class); for (int i = 0; i < weekDays.length; i++) { Log.i("mylog", weekDays[i]); }
其实就简单的一句代码就搞定了,下面的循环是为了打印结果,输出日志结果如下:
2.json字符串和类的相互转换
在开发当中,最常见的恐怕就是将json数据解析出来封装到一个类里面了。
String jsonStr = "{\"username\":\"huoying\",\"age\":38,\"address\":\"广东省东莞市茶山镇\"}";
上面的这个json字符串,我们怎么把它弄到一个类里面封装起来呢?首先我们先来自定义一个Student类。
public class Student { private String username; private int age; private String address; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
这个类非常简单,类中三个变量分别用来对应上面json字符串中的username、age和address;注意必须一一对应,也就是说Student类中的变量名称要跟json字符串中的字段名称一样,否则会获取不到,也就是解析不成功。不过你可以只写一个username,也就是说可以不用将全部字段写到类中。根据你的需要来获取就行啦。
类写好了,接下来就看怎么使用这个工具包来解析了,使用fromJson方法还是很简单就做到了,如下代码:
String jsonStr = "{\"username\":\"huoying\",\"age\":38,\"address\":\"广东省东莞市茶山镇\"}"; Gson gson = new Gson(); Student student = gson.fromJson(jsonStr,new TypeToken<Student>(){}.getType()); //Student student = gson.fromJson(jsonStr,Student.class);//上面这行代码也可以这么写 //打印语句 Log.i("mylog", student.getUsername()); Log.i("mylog", student.getAddress()); Log.i("mylog", ""+student.getAge());
我们来看看输出效果。
把上面的Student类解析成字符串那就更简单了:
String jsonString = gson.toJson(student); Log.i("mylog", "jsonString->"+jsonString);//打印语句
最后我们看看效果,发现又变回原来的json字符串了:
关于google json工具包使用方法的讲解就先到这里,后面有时间会再深入,谢谢大家的阅读!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题