json的解析,归根结底就是用JsonObject以及JsonArray来实现的。

在日常中,当我们拿到一个较为复杂的json字符串的时候,用以上两个虽然能实现解析,但显得很麻烦。这里介绍下用Gson类来将json解析为javabean。

用两个json字符串来分析:

一、简单json字符串的解析

String JSON_SIMPLE_STRING="{\"sitename\":\"JSON\",\"siteurl\":\"www.kjson.com\",\"keyword\":\"JSON在线校验,格式化JSON,json 在线校验\",\"description\":\"JSON解析\"}";

解析方式:

<span style="white-space:pre">      </span>Gson gson=new Gson();UseBean useBean=gson.fromJson(JSON_SIMPLE_STRING, UseBean.class);System.out.println(useBean.getSitename()+" "+useBean.getSiteurl()+" "+useBean.getKeyword()+" "+useBean.getDescription());

对应的UseBean如下:

package com.bill99;public class UseBean {private String sitename;private String siteurl;private String keyword;private String description;/*** @return the sitename*/public String getSitename() {return sitename;}/*** @param sitename the sitename to set*/public void setSitename(String sitename) {this.sitename = sitename;}/*** @return the siteurl*/public String getSiteurl() {return siteurl;}/*** @param siteurl the siteurl to set*/public void setSiteurl(String siteurl) {this.siteurl = siteurl;}/*** @return the keyword*/public String getKeyword() {return keyword;}/*** @param keyword the keyword to set*/public void setKeyword(String keyword) {this.keyword = keyword;}/*** @return the description*/public String getDescription() {return description;}/*** @param description the description to set*/public void setDescription(String description) {this.description = description;}}

以上是简单的一个json字符串,没有嵌套,全部都是字符串。

二、嵌套json字符串的解析

String JSON_STRING="{\"array\": [ {\"h\":1, \"i\":2,\"j\":3},{\"h\":4, \"i\":5,\"j\":6} ],  \"bool\": \"true\",   \"number\": 123,  \"object\": {\"a\": \"b\",\"c\": \"d\", \"e\": \"f\"  }, \"string\": \"Hello World\"}";

这个字符串主要包含了数组以及其他的嵌套。我们用同样的方式可以得到需要的javabean,只是javabean定义较为复杂,代码如下:

<span style="white-space:pre">  </span>    MultipleBean multipleBean=gson.fromJson(JSON_STRING, MultipleBean.class);System.out.println(multipleBean.getArray().size());

MultipleBean的定义如下:

package com.bill99;import java.util.List;public class MultipleBean {private List<ArrayBean> array;private String bool;private int number;private object object;private String string;
/*** @return the array*/
public List<ArrayBean> getArray() {return array;
}
/*** @param array the array to set*/
public void setArray(List<ArrayBean> array) {this.array = array;
}
/*** @return the number*/
public int getNumber() {return number;
}
/*** @return the bool*/
public String getBool() {return bool;
}
/*** @param bool the bool to set*/
public void setBool(String bool) {this.bool = bool;
}
/*** @param number the number to set*/
public void setNumber(int number) {this.number = number;
}
/*** @return the string*/
public String getString() {return string;
}
/*** @return the object*/
public object getObject() {return object;
}
/*** @param object the object to set*/
public void setObject(object object) {this.object = object;
}
/*** @param string the string to set*/
public void setString(String string) {this.string = string;
}}

因为MultipleBean中包含其他的类定义,各分别定义bean如下:

package com.bill99;public class ArrayBean {private int h;private int i;private int j;/*** @return the h*/public int getH() {return h;}/*** @param h the h to set*/public void setH(int h) {this.h = h;}/*** @return the i*/public int getI() {return i;}/*** @param i the i to set*/public void setI(int i) {this.i = i;}/*** @return the j*/public int getJ() {return j;}/*** @param j the j to set*/public void setJ(int j) {this.j = j;}}
package com.bill99;public class object {private String a;private String c;private String e;/*** @return the a*/public String getA() {return a;}/*** @param a the a to set*/public void setA(String a) {this.a = a;}/*** @return the c*/public String getC() {return c;}/*** @param c the c to set*/public void setC(String c) {this.c = c;}/*** @return the e*/public String getE() {return e;}/*** @param e the e to set*/public void setE(String e) {this.e = e;}}

三、抽象化

通过以上的两种形式的json字符串解析为javabean。可以看出,绝大部分的json字符串都可以用这样的形式解析为我们需要的javabean,便于代码的后续操作。

在这里可以将以上使用形式抽象化:

/**** 将将对象转换为传入类型的对象* @param * @param object* @param beanClass* @return*/public static <T> T toBean(String json, Class<T> beanClass){Gson gson=new Gson();return  (T)gson.fromJson(json, beanClass);}

使用方式:

 <span style="white-space:pre"> </span>    MultipleBean multipleBean2=toBean(JSON_STRING, MultipleBean.class);System.out.println(multipleBean2.getArray().size());

四、另一种常用的转换HashMap

在json的转换中,有另一种较为常用的转换是:json字符串转为hashmap形式,做法如下:

/**** 将对象转换为HashMap* @param object* @return*/public static HashMap toHashMap(Object object){HashMap<String, Object> data = new HashMap<String, Object>();JSONObject jsonObject = JSONUtils.toJSONObject(object);Iterator it = jsonObject.keys();while (it.hasNext()){String key = String.valueOf(it.next());Object value = jsonObject.get(key);data.put(key, value);}return data;}

五、源码

http://u.download.csdn.net/upload

六、备注

如果觉得写javabean麻烦,有一个简便的方式:用工具自动生成。网址:http://www.bejson.com/json2javapojo/

Android解析——json解析为javabean相关推荐

  1. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

  2. android中json解析及使用(上)

    本文整理自:http://www.open-open.com/lib/view/open1326376799874.html 一.JSON的定义 JSON是一种轻量级的数据交换格式,具有良好的可读和便 ...

  3. 浅谈Android项目----JSON解析(4种解析技术详解)

    json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...

  4. Android中JSON解析细解及实例

    1.JSON解析 (1).解析Object之一: {"url":"www.cnasda.com"} 解析方法: JSONObject demoJson = ne ...

  5. android中json解析及使用 (下)

    接上文 七.通过JSONTokener来解析json文本 7.1.将json文本解析为对象 我们可以通过JSONTokener的nextValue()来获得JSONObject对象,然后再通过JSON ...

  6. android的json数据解析,Android数据解析-JSON解析

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  7. android json教程,Android之JSON解析

    编写项目,包含一个Activity.Activity页面效果如下图所示.点击按钮"解析文件1"后解析Json文件json_single并将结果显示在红色框体中,点击按钮" ...

  8. android中json解析及使用(中)

    接上文 六.通过JSONObject与JSONArray来解析json 我们可以通过JSONObject与JSONArray的getInt,getString,getDouble,getJSONArr ...

  9. [Android开发] Json解析工具类,一个类搞定Json的解析

    一.简介 利用递归的方式反射解析到bean里面 二.详细代码 1. Json格式 例如服务器指定规定json格式为: {"code": "--" , // 返回 ...

最新文章

  1. 简单C++线程池包装类源码示例
  2. 【javamatlab】以一个简单的例子实现java和matlab混编
  3. 基于Numpy构建全连接前馈神经网络进行手写数字识别
  4. xml 和android脚本之家,Android利用Document实现xml读取和写入操作
  5. ASP.NET编程模型
  6. 如何在IE/Edge浏览器中巧妙地传输HTA文件?
  7. oralce load的时候使用触发器会导致load慢吗_一次FGC导致CPU飙高的排查过程
  8. java线索二叉树的实现_JAVA递归实现线索化二叉树
  9. 文件复制函数的效率比较
  10. java 分析图片文字大小时,剔除部分异常数据,思路梳理(格拉布斯准则)
  11. 矢量网络分析仪--测天线时使用技巧
  12. 2017年世界各国GDP总值排名预测榜单
  13. 皇甫兵兵php,段颎 汉 文旅网 - powered by phpwind.net
  14. 18年6月六级翻译词汇
  15. poi 操作 PPT,针对 PPTX--图表篇
  16. LinkedIn Camus实践及踩坑记录
  17. 拉普拉斯Laplace算子和高斯二阶导核(LOG算子)和SIFT算法
  18. steam切换账号工具
  19. 凝思linux操作系统4.2内核版本_凝思linx6.0.76操作系统安装教程
  20. ESP8266-01S接入机智云物联网平台

热门文章

  1. LVGL8_Esp32_颜色反转设置-INVERT_COLORS
  2. Windows命令行取进程路径
  3. 用 VB 打开任意盘(硬盘/U盘/光盘)的文件.
  4. IPhone开发三天上手纪实(ZT)
  5. 蒟蒻のJAVA小窝(关于封装的一些思考)经同意转载
  6. shell编程之大数据面试题
  7. 服务器接sata2.5寸硬盘,2.5英寸SATA-3固态硬盘手动安装的详细教程
  8. 搜索· 真正题材股和蓝筹股
  9. 收到来自Apple Music Team和Apple Books Team的邮件?
  10. 从ppt中提取H3C图标库,会有你需要的