用gson 解 json
1、json 简单介绍
轻量级数据存储传输文件,比xml精简。
2、Gson简单介绍
android中解json方式很多,比较常用json-lib goole-Gson. json-lib要包含的包比较多。就学习采用了goole的Gson.
下载链接:http://code.google.com/p/google-gson/
帮助文档:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html
从文档结构上清楚的看到。普通的解析json只要用Gson这个类即可 解为java 对象。如果想要手解可以调用:JsonReader 的方法自己解析。我遇到的情况比较简单没必要自己手解。
3、json 解析为一个类对象
步骤:
a) 创建一个类。成员名取json 键值的键名
b) 创建一个Gson 对象
c) 调用fromJson 方法得到对应类实例。该方法有很多重载详细参阅文档。
得到实例,对应的值就赋到了对应的键里了。
String string =
"{\"userId\":215,\"username\":\"haode\",\"user\":\"haode\", \"eage\":512}";
Gson gson = new Gson();
try {
Fromat mFromat = gson.fromJson(string, Fromat.class);
} catch (Exception JsonSyntaxException) {
// TODO: handle exception
JsonSyntaxException.printStackTrace();
}
4、json 解析为一个类对象集
a) 创建一个类。成员名取json 键值的键名。
b) 创建一个Gson 对象
c) 创建类集 调用TypeToken 方法取得类型。文档中有详细描述
c) 调用fromJson 方法得到对应类集实例。该方法有很多重载详细参阅文档。
String string2 = "[{\"userId\":215,\"username\":\"haode\",\"user\":\"haode\"},{\"userId\":215,\"username\":\"haode\",\"user\":\"haode\"}]";
Gson gson2 = new Gson();
LinkedList<Fromat> mList = new LinkedList<MainActivity.Fromat>();
Type typeOfT = new TypeToken<LinkedList<Fromat>>(){}.getType();
try {
mList = gson2.fromJson(string2, typeOfT);
} catch (Exception JsonSyntaxException) {
// TODO: handle exception
JsonSyntaxException.printStackTrace();
}
5、json 嵌套解析。
关键点:设计一个嵌套类,类实例取名为键值
例子:
json: {"userId":12345678,"username":"demo","plant":[{"id":1,"name":"name1"},{"id":2,"name":"name2"}]}
视图:
对应嵌套类:
解析代码:
InputStream jsonInputStream4 = getResources().openRawResource(R.raw.enty);
Gson jsonGson4 = new Gson();
Reader mReader4 = new InputStreamReader(jsonInputStream4);
SolarEnty mSolar4 = jsonGson4.fromJson(mReader4, SolarEnty.class);
6、json解析list (这个经常记不住)
Gson gson = new Gson();
java.lang.reflect.Type type =new TypeToken<List<ShopRecommmedEntity>>() {
}.getType();
List<ShopRecommmedEntity> list = gson.fromJson(response, type);
最新文章
- 深入理解JQuery插件开发
- SQL Server AlwaysOn架构及原理
- Android中序列化对象到XMl 和 XML反序列化为对象
- Linux下切换用户
- DiskGenius的 “终止位置参数溢出”错误解决方法。
- Android学习之路——简易版微信为例(二)
- [C#错误]	未找到类型或命名空间名称"; "; (是否缺少 using 指令或程序集引用?)
- HDU3726---Graph and Queries 离线处理+Treap
- GridView.GridLines 属性
- JSP 对象的作用范围
- java异常处理规范
- ERROR org.hibernate.hql.internal.ast.ErrorCounter unexpected token: form 异常解决
- 【前端安全】JavaScript防流量劫持
- 全网最详细的hive-site.xml配置文件里如何添加达到Hive与HBase的集成,即Hive通过这些参数去连接HBase(图文详解)
- web项目中的路径问题
- 《关于ES6的学习》
- cout的输出格式初探2
- # 20145118 《Java程序设计》第4周学习总结 ## 教材学习内容总结
- 1024 Palindromic Number
- 005---基于UDP的套接字
热门文章
- js获取当期日期累加天数
- 2015.4.10-SQL 高级查询(二)
- node.js中favicon.ico请求两次问题
- php in_array 和 str_replace
- codeforces 713D D. Animals and Puzzle 二分+二维rmq
- C语言的本质(26)——C标准库之数值字符串转换
- 体验下Xcode5与ios7
- C++类对应的内存结构
- 【Leetcode】二叉树简单路径最大和问题
- 静态查找_Search