Gson解析和json解析
来源:互联网 发布:济南市网络举报电话 编辑:程序博客网 时间:2024/06/08 00:53
json数据的简单介绍:
json数据是一种轻量级的数据交换格式,一键值对的形式表现的。用[]括起来的可以理解为数组、用{}括起来的可以理解为对象。
例如:
//对象{ "id":123, "username":"ws", "password":"admin", "phone":"15333333333" } //数组[{ "id":123, "username":"ws", "password":"admin", "phone":"15333333333" }, { "id":123, "username":"ws", "password":"admin", "phone":"15333333333" }]
json解析是一种原声的解析方式,主要注意两种对象:JSONObject和JSONArray。
JSONObject———>{}
JSONArray———>[]
也就是说,遇到[]就解析为数组JSONArray,遇到{}就解析为JSONObject。
JSON原声解析:
下面拿一个小例子来说明:
{"id":001,"username":"ws","pasword":"admin","action":[{"type":"eat", "time":"6"}, {"type":"sleep" "time":"11" }] }
接下来进行解析喽:
public Map<String,Object> getDate(String json){ //最外层为{},所以我这里解析为Map Map<String,Object> map = new HashMap<>(); try { //一定不要忘了传参数哈 JSONObject jsonObject = new JSONObject(json); int id = jsonObject.getInt("id"); map.put("id",id); String username = jsonObject.getString("username"); map.put("username",username); //使用opt防止出现空指针 String password = jsonObject.optString("password"); map.put("password",password); //此处可以看到有一个[],所以解析为数组 JSONArray jsonArray = jsonObject.getJSONArray("action"); //存放数组,就需要有集合 List<PersonClass> list = new ArrayList<>(); //对集合进行遍历,取出所有的对象 for(int i = 0 ;i<jsonArray.length();i++){ jsonObject = jsonArray.getJSONObject(i); String type = jsonObject.getString("type"); String time = jsonObject.getString("time"); //对象可以放Map中也可以放对象(类)中 PersonClass personClass = new PersonClass(type,time); list.add(personClass); } //最后将集合整体放到Map中 map.put("action",list); return map; } catch (JSONException e) { e.printStackTrace(); } return null; } class PersonClass{ private String type; private String time; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public PersonClass() { } public PersonClass(String type, String time) { this.type = type; this.time = time; } }
说明一下:
1、我们可以把解析出来的东西放到map里,或者解析成对象,我这里都一起使用了。
2、解析的时候我使用的有getXXX还有optXXX,个人推荐使用optXXX因为使用它可以避免空指针的出现。
3、之前也说过遇到[]就理解为数组、{}理解为对象,所以在解析的时候遇到[]就创建一个集合,遇到{}就创建一个对象或者Map。
这一块就是多加练习就OK的。
Gson解析:
Gson是在json的封装基础上产生的,有的时候用着很方便,但是没有原声的灵活,所以大多数都是两种一起使用。
1、使用Gson是将{}解析成了对象,所以就需要有一个相应的实体类;
2、类中的属性必须和json数据的key的字段一样;
3、json数据中的字段,在实体类中不一定包含该属性;
4、若{}中包涵{},只需在实体类中在创建一个内部类就可以;
5、若{}中包涵[],只需使得实体类中对应的属性为集合就可以了;
6、若一开始就是[],就要使用TypeToken
//使用Gson进行解析Person public static <T> T getPerson(String jsonString, Class<T> cls) { T t = null; try { Gson gson = new Gson(); t = gson.fromJson(jsonString, cls); } catch (Exception e) { // TODO: handle exception } return t; } // 使用Gson进行解析 List<Person> public static <T> List<T> getPersons(String jsonString, Class<T> cls) { List<T> list = new ArrayList<T>(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken<List<T>>() { }.getType()); } catch (Exception e) { } return list; }
更多的Gson学习点击这里
0 0
- Gson 和Json解析
- Gson解析和json解析
- JSON解析和GSON解析
- json概述和gson解析
- JSON解析 GSON解析
- json解析:gson解析json
- GSON方式生成和解析json数据
- GSON方式生成和解析json数据
- google-GSON解析和生成JSON数据
- Gson解析和封装json数据
- GSON方式生成和解析json数据
- json解析库gson和fastjson使用
- GSON方式生成和解析json数据
- GSON方式生成和解析json数据
- GSON方式生成和解析json数据
- 使用Gson生成和解析json数据
- xutils和Gson解析Json数据
- 运用框架的Json和Gson解析
- 【札记】SUSE Linux(SLES 11为例)下常用维护命令,文件大小、查找内容、统计、打包、远程拷贝、FTP、SSH
- 实例:再按一次返回键退出应用
- PAT-B 1026. 程序运行时间
- HDU 5052 Yaoge’s maximum profit (树链剖分 + 线段树)
- javaweb—servlet的简单入门使用
- Gson解析和json解析
- 2016 Multi-University Training Contest 2-1005---HDU 5738 Eureka
- Android内存泄漏的八种可能
- linux系统终端创建虚拟环境
- eclipse+tomcat+solr环境部署
- [书目20130415]实用IT项目管理
- mac下的常用命令
- C语言 随机函数 种子
- ArrayList实现原理