一、介绍

org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究。

二、下载jar依赖包

可以去这里下载

三、基本方法介绍

package com.json;import java.lang.reflect.Method;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;import org.json.JSONException;
import org.json.JSONObject;/*** * 1:将JavaBean转换成Map、JSONObject* 2:将Map转换成Javabean* 3:将JSONObject转换成Map、Javabean* * @author Alexia*/public class JsonHelper {/*** 将Javabean转换为Map* * @param javaBean*            javaBean* @return Map对象*/public static Map toMap(Object javaBean) {Map result = new HashMap();Method[] methods = javaBean.getClass().getDeclaredMethods();for (Method method : methods) {try {if (method.getName().startsWith("get")) {String field = method.getName();field = field.substring(field.indexOf("get") + 3);field = field.toLowerCase().charAt(0) + field.substring(1);Object value = method.invoke(javaBean, (Object[]) null);result.put(field, null == value ? "" : value.toString());}} catch (Exception e) {e.printStackTrace();}}return result;}/*** 将Json对象转换成Map* * @param jsonObject*            json对象* @return Map对象* @throws JSONException*/public static Map toMap(String jsonString) throws JSONException {JSONObject jsonObject = new JSONObject(jsonString);Map result = new HashMap();Iterator iterator = jsonObject.keys();String key = null;String value = null;while (iterator.hasNext()) {key = (String) iterator.next();value = jsonObject.getString(key);result.put(key, value);}return result;}/*** 将JavaBean转换成JSONObject(通过Map中转)* * @param bean*            javaBean* @return json对象*/public static JSONObject toJSON(Object bean) {return new JSONObject(toMap(bean));}/*** 将Map转换成Javabean* * @param javabean*            javaBean* @param data*            Map数据*/public static Object toJavaBean(Object javabean, Map data) {Method[] methods = javabean.getClass().getDeclaredMethods();for (Method method : methods) {try {if (method.getName().startsWith("set")) {String field = method.getName();field = field.substring(field.indexOf("set") + 3);field = field.toLowerCase().charAt(0) + field.substring(1);method.invoke(javabean, new Object[] {data.get(field)});}} catch (Exception e) {}}return javabean;}/*** JSONObject到JavaBean* * @param bean*            javaBean* @return json对象* @throws ParseException*             json解析异常* @throws JSONException*/public static void toJavaBean(Object javabean, String jsonString)throws ParseException, JSONException {JSONObject jsonObject = new JSONObject(jsonString);Map map = toMap(jsonObject.toString());toJavaBean(javabean, map);}}

四、演示示例

这里以基本的几个常用方法进行测试

package com.json;import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;/*** 使用json-lib构造和解析Json数据* * @author Alexia* @date 2013/5/23* */
public class OrgJsonTest {/*** 构造Json数据* * @return* @throws JSONException*/public static String BuildJson() throws JSONException {// JSON格式数据解析对象JSONObject jo = new JSONObject();// 下面构造两个map、一个list和一个Employee对象Map<String, String> map1 = new HashMap<String, String>();map1.put("name", "Alexia");map1.put("sex", "female");map1.put("age", "23");Map<String, String> map2 = new HashMap<String, String>();map2.put("name", "Edward");map2.put("sex", "male");map2.put("age", "24");List<Map> list = new ArrayList<Map>();list.add(map1);list.add(map2);Employee employee = new Employee();employee.setName("wjl");employee.setSex("female");employee.setAge(24);// 将Map转换为JSONArray数据JSONArray ja = new JSONArray();ja.put(map1);System.out.println("JSONArray对象数据格式:");System.out.println(ja.toString());// 将Javabean转换为Json数据(需要Map中转)JSONObject jo1 = JsonHelper.toJSON(employee);System.out.println("\n仅含Employee对象的Json数据格式:");System.out.println(jo1.toString());// 构造Json数据,包括一个map和一个含Employee对象的Json数据jo.put("map", ja);jo.put("employee", jo1.toString());System.out.println("\n最终构造的JSON数据格式:");System.out.println(jo.toString());return jo.toString();}/*** 解析Json数据* * @param jsonString*            Json数据字符串* @throws JSONException* @throws ParseException*/public static void ParseJson(String jsonString) throws JSONException,ParseException {JSONObject jo = new JSONObject(jsonString);JSONArray ja = jo.getJSONArray("map");System.out.println("\n将Json数据解析为Map:");System.out.println("name: " + ja.getJSONObject(0).getString("name")+ " sex: " + ja.getJSONObject(0).getString("sex") + " age: "+ ja.getJSONObject(0).getInt("age"));String jsonStr = jo.getString("employee");Employee emp = new Employee();JsonHelper.toJavaBean(emp, jsonStr);System.out.println("\n将Json数据解析为Employee对象:");System.out.println("name: " + emp.getName() + " sex: " + emp.getSex()+ " age: " + emp.getAge());}/*** @param args* @throws JSONException* @throws ParseException*/public static void main(String[] args) throws JSONException, ParseException {// TODO Auto-generated method stubParseJson(BuildJson());}}

运行结果如下

转载于:https://blog.51cto.com/334695909/1694628

Java构造和解析Json数据之org.json相关推荐

  1. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  2. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  3. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  4. Java读取和解析Excel数据:基于Apache POI(二)

    Java读取和解析Excel数据:基于Apache POI(二) 假设附录1文章中的test.xls是对员工的考勤记录表.需要根据这张excel表统计员工的加班时间,那么需要重点关注第五列的下班时候的 ...

  5. json数据和字符串json数据相互转换

    json数据和字符串json数据相互转换 1.json数据和字符串json数据相互转换 2.本地存储(localStorage.sessionStorage) 3.audio的属性.事件.方法 3.1 ...

  6. 如何构建JSON数据,JSON数据的格式,JSON数据的获取

    假设你是用$.getJSON();方法获取JSON数据 $.getJSON(url,{"Action":"getStudent"},function(data) ...

  7. Python实现json数据清洗、json数据去重、json数据统计

    目录 问题背景 问题分析 问题解决 1.问题背景 1.文件夹中有若干json文件,每个文件中json格式基本一致;(一般是按时间排序的文件名) 2.部分json数据缺失,需要补充这部分缺失是json数 ...

  8. [js] localStorage 如何存储JSON数据并读取JSON数据

    localStorage是HTML5提供的再客户端实现本地存储的一种方法,但是localStorage方法只能存储字符串数据,有时候我们需要存储对象到本地比如:JSON:那么,localStorage ...

  9. java中json数据_Java中json的使用 解析json数据

    1.java提取json嵌套多层的数据 json数据为: { "res": [{ "name": "0", "text" ...

最新文章

  1. 解决cocopods不提示第三方库名字的方法
  2. 【IBM研究院】2020年人工智能发展五大预测
  3. php中的函数调简单 传入参数即可,php函数与传递参数的简单示例
  4. python线程代码_python--(十步代码学会线程)
  5. 【GOF23设计模式】原型模式
  6. 作者:温孚江,现任山东农业大学校长、教授,农业大数据创新战略联盟理事长,全国人民代表大会常务委员会委员。...
  7. pat编程语言_浙江大学在线pat题库集合
  8. 一、 zedboardubuntu 14.04 的前期准备(定期更新)
  9. Android-AlarmManager(全局定时器/闹钟)
  10. MySQL 索引最左匹配原则的理解
  11. myeclipse导出war包出错Security alert解决办法
  12. java中nul值的处理
  13. windows安装syslog日志转发客户端nxlog
  14. CAD中如何使用Lisp程序编写坐标标注功能
  15. 小米——系统升级失败,不断重启解决+刷xposed(lsposed)+刷recovery+刷magisk
  16. Redis缓存——快速入门
  17. 【影视系列】《变形金刚5-最后的骑士》
  18. 集成OpenLDAP与Kerberos实现统一认证(三):基于SASL/GSSAPI深度集成
  19. MacVim中文乱码解决
  20. BBEdit 10.X for mac的lincese

热门文章

  1. fasttext简单理解及应用
  2. 孤立森林异常检测之入门
  3. 机器学习的部分名词解释20180724
  4. 计算机基本信息的获取
  5. 49天备考信息系统项目管理师3科50+
  6. 信息系统项目管理师教程章节重点考点汇总(1)绪论重点
  7. 笔记-信息化与系统集成技术-人工智能的特点
  8. 信息系统项目管理师-项目风险管理考点笔记
  9. C#中获取指定路径下特定开头和后缀的所有文件
  10. Jquery中绑定select的change事件自动填充input的value值