net.sf.json依赖的包很多。

有commons-collections,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph-1.0.5.jar,morph-1.1.1.jar

  1. /**
  2. * 从一个JSON 对象字符格式中得到一个java对象,形如:
  3. * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}
  4. * @param object
  5. * @param clazz
  6. * @return
  7. */
  8. public static Object getDTO(String jsonString, Class clazz){
  9. JSONObject jsonObject = null;
  10. try{
  11. setDataFormat2JAVA();
  12. jsonObject = JSONObject.fromObject(jsonString);
  13. }catch(Exception e){
  14. e.printStackTrace();
  15. }
  16. return JSONObject.toBean(jsonObject, clazz);
  17. }
  18. /**
  19. * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:
  20. * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},
  21. * beansList:[{}, {}, ...]}
  22. * @param jsonString
  23. * @param clazz
  24. * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class)
  25. * @return
  26. */
  27. public static Object getDTO(String jsonString, Class clazz, Map map){
  28. JSONObject jsonObject = null;
  29. try{
  30. setDataFormat2JAVA();
  31. jsonObject = JSONObject.fromObject(jsonString);
  32. }catch(Exception e){
  33. e.printStackTrace();
  34. }
  35. return JSONObject.toBean(jsonObject, clazz, map);
  36. }
  37. /**
  38. * 从一个JSON数组得到一个java对象数组,形如:
  39. * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
  40. * @param object
  41. * @param clazz
  42. * @return
  43. */
  44. public static Object[] getDTOArray(String jsonString, Class clazz){
  45. setDataFormat2JAVA();
  46. JSONArray array = JSONArray.fromObject(jsonString);
  47. Object[] obj = new Object[array.size()];
  48. for(int i = 0; i < array.size(); i++){
  49. JSONObject jsonObject = array.getJSONObject(i);
  50. obj[i] = JSONObject.toBean(jsonObject, clazz);
  51. }
  52. return obj;
  53. }
  54. /**
  55. * 从一个JSON数组得到一个java对象数组,形如:
  56. * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
  57. * @param object
  58. * @param clazz
  59. * @param map
  60. * @return
  61. */
  62. public static Object[] getDTOArray(String jsonString, Class clazz, Map map){
  63. setDataFormat2JAVA();
  64. JSONArray array = JSONArray.fromObject(jsonString);
  65. Object[] obj = new Object[array.size()];
  66. for(int i = 0; i < array.size(); i++){
  67. JSONObject jsonObject = array.getJSONObject(i);
  68. obj[i] = JSONObject.toBean(jsonObject, clazz, map);
  69. }
  70. return obj;
  71. }
  72. /**
  73. * 从一个JSON数组得到一个java对象集合
  74. * @param object
  75. * @param clazz
  76. * @return
  77. */
  78. public static List getDTOList(String jsonString, Class clazz){
  79. setDataFormat2JAVA();
  80. JSONArray array = JSONArray.fromObject(jsonString);
  81. List list = new ArrayList();
  82. for(Iterator iter = array.iterator(); iter.hasNext();){
  83. JSONObject jsonObject = (JSONObject)iter.next();
  84. list.add(JSONObject.toBean(jsonObject, clazz));
  85. }
  86. return list;
  87. }
  88. /**
  89. * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性
  90. * @param object
  91. * @param clazz
  92. * @param map 集合属性的类型
  93. * @return
  94. */
  95. public static List getDTOList(String jsonString, Class clazz, Map map){
  96. setDataFormat2JAVA();
  97. JSONArray array = JSONArray.fromObject(jsonString);
  98. List list = new ArrayList();
  99. for(Iterator iter = array.iterator(); iter.hasNext();){
  100. JSONObject jsonObject = (JSONObject)iter.next();
  101. list.add(JSONObject.toBean(jsonObject, clazz, map));
  102. }
  103. return list;
  104. }
  105. /**
  106. * 从json HASH表达式中获取一个map,该map支持嵌套功能
  107. * 形如:{"id" : "johncon", "name" : "小强"}
  108. * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap
  109. * @param object
  110. * @return
  111. */
  112. public static Map getMapFromJson(String jsonString) {
  113. setDataFormat2JAVA();
  114. JSONObject jsonObject = JSONObject.fromObject(jsonString);
  115. Map map = new HashMap();
  116. for(Iterator iter = jsonObject.keys(); iter.hasNext();){
  117. String key = (String)iter.next();
  118. map.put(key, jsonObject.get(key));
  119. }
  120. return map;
  121. }
  122. /**
  123. * 从json数组中得到相应java数组
  124. * json形如:["123", "456"]
  125. * @param jsonString
  126. * @return
  127. */
  128. public static Object[] getObjectArrayFromJson(String jsonString) {
  129. JSONArray jsonArray = JSONArray.fromObject(jsonString);
  130. return jsonArray.toArray();
  131. }
  132. /**
  133. * 把数据对象转换成json字符串
  134. * DTO对象形如:{"id" : idValue, "name" : nameValue, ...}
  135. * 数组对象形如:[{}, {}, {}, ...]
  136. * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}
  137. * @param object
  138. * @return
  139. */
  140. public static String getJSONString(Object object) throws Exception{
  141. String jsonString = null;
  142. //日期值处理器
  143. JsonConfig jsonConfig = new JsonConfig();
  144. jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
  145. if(object != null){
  146. if(object instanceof Collection || object instanceof Object[]){
  147. jsonString = JSONArray.fromObject(object, jsonConfig).toString();
  148. }else{
  149. jsonString = JSONObject.fromObject(object, jsonConfig).toString();
  150. }
  151. }
  152. return jsonString == null ? "{}" : jsonString;
  153. }

java中使用net.sf.json对json进行解析的更多相关文章

  1. java中Array/List/Map/Object与Json互相转换详解

    http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...

  2. Java中注解Annotation的定义、使用、解析

    此例子,用于说明如何在Java中对“注解 Annotation”的定义.使用和解析的操作.注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用,以作备记.下面例子已测试, ...

  3. java 中的JDK封装的数据结构和算法解析(集合类)----顺序表 List 之 ArrayList

    1. 数据结构之List (java:接口)[由于是分析原理,这里多用截图说明] List是集合类中的容器之一,其定义如下:(无序可重复) An ordered collection (also kn ...

  4. JAVA中的类不要使用$符的原因解析

    下面是在Java中标识符的定义 1.标识符由字母.数字.货币符号(¥.$等).连接符号(_等)组成.(这里的字母为Unicode字符集, 而不再局限于传统的26个英文字母.)2.标识符的首字符可以是字 ...

  5. java中Array/List/Map/Object与Json互相转换详解(转载)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  6. JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)

    原文:http://blog.csdn.net/jinzhencs/article/details/51461776 场景:在我们工作中,有时需要生成一些文件,可能它不是一种标准的格式,比如JSON. ...

  7. java中object数据怎么转换成json数据

    可以通过这个(json-lib-2.3-jdk15.jar)jar里的方法转换 JSONObject json = JSONObject.fromObject(Object); 如果对象数组 JSON ...

  8. java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 Vector (向量)

    Vector  看JDK解释(中文翻译)吧: Vector 类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适应创建  ...

  9. Java中关于string的些许问题及解析

    问题一:String 和 StringBuffer 的区别JAVA 平台提供了两个类: String 和 StringBuf fer ,它们可以储存和操作字符串,即包含多个字符的字符数据.这个 Str ...

随机推荐

  1. Jackson学习(一)

    Jackson的一些配置.使用方式以及效率方面的简单介绍. 1.jackson的maven依赖 <!-- jackson依赖 --> <dependency> <grou ...

  2. Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(三)

    1,这一篇博客是和大家一起来封装我们最后的Dagger2,其实之前也写过关于简单的Dagger2,这里是地址,完全没了解的同学可以先去看一下这篇,感谢很多小伙伴一直在耐心的等待这一篇 2,Dagger ...

  3. 2017-02-19C#基础 - 数据类型与类型转换

    数据类型 基本数据类型 1)整形:byte  short  int  long 整数类型 2)浮点型:fioat(.NET类型 Single 值后面要加f float = 10.5f;)  doubl ...

  4. 2017年最新chrome必备插件推荐

    1. 上网必备 Speed dial plus新标签页, 直接替换掉chrome自带的毫无新意的新标签页,简洁优美快速,我本人非常喜欢. &amp;lt;img src="https ...

  5. Robot Framework 关键字自定义

    关键字自定义有三种方法: 1.在自动化目录中右键-->New User Keyword 2.选中case中的步骤(可选多行),右键-->Extract Keyword 3.自己写模块,自定 ...

  6. 使用slice和concat对数组的深拷贝和浅拷贝

    一.数组浅拷贝 在使用JavaScript对数组进行操作的时候,我们经常需要将数组进行备份. 如下代码,如果只是简单才用赋值的方法,那么我们只要更改其中的任何一个,然后其他的也会跟着改变,这就导致了问 ...

  7. Python总的字符串

    Python总最常用的类型,使用单引号双引号表示.三引号之间的字符串可以跨多行并且可以是原样输出的. Python中不支持字符类型,字符也是字符串. ---字符串的CRUD [1:3] [:6] -- ...

  8. VS2013和VS2015中MVC 区域路由匹配顺序相反

    创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改Rou ...

  9. 基于EM的多直线拟合

    作者:桂. 时间:2017-03-22  06:13:50 链接:http://www.cnblogs.com/xingshansi/p/6597796.html 声明:欢迎被转载,不过记得注明出处哦 ...

  10. MySQL二进制日志总结

    二进制日志简单介绍 MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句.二进制日志(binary log)中记录了对MySQL数据 ...