java中使用net.sf.json对json进行解析
net.sf.json依赖的包很多。
有commons-collections,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph-1.0.5.jar,morph-1.1.1.jar
- /**
- * 从一个JSON 对象字符格式中得到一个java对象,形如:
- * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}
- * @param object
- * @param clazz
- * @return
- */
- public static Object getDTO(String jsonString, Class clazz){
- JSONObject jsonObject = null;
- try{
- setDataFormat2JAVA();
- jsonObject = JSONObject.fromObject(jsonString);
- }catch(Exception e){
- e.printStackTrace();
- }
- return JSONObject.toBean(jsonObject, clazz);
- }
- /**
- * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:
- * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},
- * beansList:[{}, {}, ...]}
- * @param jsonString
- * @param clazz
- * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class)
- * @return
- */
- public static Object getDTO(String jsonString, Class clazz, Map map){
- JSONObject jsonObject = null;
- try{
- setDataFormat2JAVA();
- jsonObject = JSONObject.fromObject(jsonString);
- }catch(Exception e){
- e.printStackTrace();
- }
- return JSONObject.toBean(jsonObject, clazz, map);
- }
- /**
- * 从一个JSON数组得到一个java对象数组,形如:
- * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
- * @param object
- * @param clazz
- * @return
- */
- public static Object[] getDTOArray(String jsonString, Class clazz){
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- Object[] obj = new Object[array.size()];
- for(int i = 0; i < array.size(); i++){
- JSONObject jsonObject = array.getJSONObject(i);
- obj[i] = JSONObject.toBean(jsonObject, clazz);
- }
- return obj;
- }
- /**
- * 从一个JSON数组得到一个java对象数组,形如:
- * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
- * @param object
- * @param clazz
- * @param map
- * @return
- */
- public static Object[] getDTOArray(String jsonString, Class clazz, Map map){
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- Object[] obj = new Object[array.size()];
- for(int i = 0; i < array.size(); i++){
- JSONObject jsonObject = array.getJSONObject(i);
- obj[i] = JSONObject.toBean(jsonObject, clazz, map);
- }
- return obj;
- }
- /**
- * 从一个JSON数组得到一个java对象集合
- * @param object
- * @param clazz
- * @return
- */
- public static List getDTOList(String jsonString, Class clazz){
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- List list = new ArrayList();
- for(Iterator iter = array.iterator(); iter.hasNext();){
- JSONObject jsonObject = (JSONObject)iter.next();
- list.add(JSONObject.toBean(jsonObject, clazz));
- }
- return list;
- }
- /**
- * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性
- * @param object
- * @param clazz
- * @param map 集合属性的类型
- * @return
- */
- public static List getDTOList(String jsonString, Class clazz, Map map){
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- List list = new ArrayList();
- for(Iterator iter = array.iterator(); iter.hasNext();){
- JSONObject jsonObject = (JSONObject)iter.next();
- list.add(JSONObject.toBean(jsonObject, clazz, map));
- }
- return list;
- }
- /**
- * 从json HASH表达式中获取一个map,该map支持嵌套功能
- * 形如:{"id" : "johncon", "name" : "小强"}
- * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap
- * @param object
- * @return
- */
- public static Map getMapFromJson(String jsonString) {
- setDataFormat2JAVA();
- JSONObject jsonObject = JSONObject.fromObject(jsonString);
- Map map = new HashMap();
- for(Iterator iter = jsonObject.keys(); iter.hasNext();){
- String key = (String)iter.next();
- map.put(key, jsonObject.get(key));
- }
- return map;
- }
- /**
- * 从json数组中得到相应java数组
- * json形如:["123", "456"]
- * @param jsonString
- * @return
- */
- public static Object[] getObjectArrayFromJson(String jsonString) {
- JSONArray jsonArray = JSONArray.fromObject(jsonString);
- return jsonArray.toArray();
- }
- /**
- * 把数据对象转换成json字符串
- * DTO对象形如:{"id" : idValue, "name" : nameValue, ...}
- * 数组对象形如:[{}, {}, {}, ...]
- * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}
- * @param object
- * @return
- */
- public static String getJSONString(Object object) throws Exception{
- String jsonString = null;
- //日期值处理器
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
- if(object != null){
- if(object instanceof Collection || object instanceof Object[]){
- jsonString = JSONArray.fromObject(object, jsonConfig).toString();
- }else{
- jsonString = JSONObject.fromObject(object, jsonConfig).toString();
- }
- }
- return jsonString == null ? "{}" : jsonString;
- }
java中使用net.sf.json对json进行解析的更多相关文章
- java中Array/List/Map/Object与Json互相转换详解
http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...
- Java中注解Annotation的定义、使用、解析
此例子,用于说明如何在Java中对“注解 Annotation”的定义.使用和解析的操作.注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用,以作备记.下面例子已测试, ...
- java 中的JDK封装的数据结构和算法解析(集合类)----顺序表 List 之 ArrayList
1. 数据结构之List (java:接口)[由于是分析原理,这里多用截图说明] List是集合类中的容器之一,其定义如下:(无序可重复) An ordered collection (also kn ...
- JAVA中的类不要使用$符的原因解析
下面是在Java中标识符的定义 1.标识符由字母.数字.货币符号(¥.$等).连接符号(_等)组成.(这里的字母为Unicode字符集, 而不再局限于传统的26个英文字母.)2.标识符的首字符可以是字 ...
- java中Array/List/Map/Object与Json互相转换详解(转载)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)
原文:http://blog.csdn.net/jinzhencs/article/details/51461776 场景:在我们工作中,有时需要生成一些文件,可能它不是一种标准的格式,比如JSON. ...
- java中object数据怎么转换成json数据
可以通过这个(json-lib-2.3-jdk15.jar)jar里的方法转换 JSONObject json = JSONObject.fromObject(Object); 如果对象数组 JSON ...
- java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 Vector (向量)
Vector 看JDK解释(中文翻译)吧: Vector 类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适应创建 ...
- Java中关于string的些许问题及解析
问题一:String 和 StringBuffer 的区别JAVA 平台提供了两个类: String 和 StringBuf fer ,它们可以储存和操作字符串,即包含多个字符的字符数据.这个 Str ...
随机推荐
- HTML&CSS Table元素详细解说
1.预热 css样式多如牛毛,我不可能一个一个去讲,那样好像背字典一样,我相信你们也不喜欢这样的方式.所以,我会在实战中慢慢和你讲解,然后,你记住一些重要的css属性就可以了.关键是,你要学会去查资料 ...
- vue关于class和样式的使用
这篇文章主要为大家详细介绍了Vue.js的Class与样式绑定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 数据绑定一个常见需求是操作元素的 class 列表和它的内联样式.因为它们都是 att ...
- 1653: [Usaco2006 Feb]Backward Digit Sums
1653: [Usaco2006 Feb]Backward Digit Sums Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 285 Solved: ...
- 深入理解 JavaScript 异步系列(5)—— async await
第一部分,ES7 中引入 async-await 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6532734.html 未经作者允许,不得转载~ 前面介绍 ...
- 解决ubuntu更新中断后报错问题
今天在更新ubuntu的时候,更新了一半被我强制关闭了,就报错了 当再使用sudo apt-get update命令时出现了dpkg was interrupted,you must manually ...
- PHP流程管理,堪比小小程序
这个流程管理是从用户登录界面开始,然后提交申请,页面逐级审核通过.这个做起来其实挺简单,只是在某些逻辑方面需要 好好考虑一下. 登录页面就不再多说了,如果要存session的话,我们可以建一个假的登录 ...
- 运行错误:应用程序无法启动因为并行配置不正确。the application has failed to start because its side-by-side configuration is incorrect 解决方法
问题描述: 当电脑同时安装VS2008和VS2008 SP1时,编译出来的Visual C++程序的manifest 文件会默认引用VS2008的MFC版本和CRT版本.如下: <depende ...
- Struts2之Action与配置文件
一.Struts2配置文件 1.struts.properties 在学习Action之前先学下Struts2的配置文件,与Struts2相关的配置文件有好几个,常用的有Struts.xml,web. ...
- oracle备份脚本
利用EXP导出全库,必须用SYSTEM或者DBA用户来导出. 具体脚本实现如下 全库导出(fullbackup): #!/bin/bash bname=`date +%Y%m%d` cd /backu ...
- unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8
在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等 其原因在于,unity本身是 ...