- 浏览: 508415 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
自己编写了一个工具类,处理页面提交json格式数据到后台,再进行处理成JAVA对象数据
1、DTO:Data Transfer Object,数据传送对象
2、对于日期格式的问题,也已经处理
3、json-lib-2.2.2-jdk13.jar (2.1在日期数组 json->java有问题)
工具类JsonUtil代码如下:
- public class JsonUtil {
- /**页面传至后台时,json数据在request的参数名称*/
- public final static String JSON_ATTRIBUTE = "json" ;
- public final static String JSON_ATTRIBUTE1 = "json1" ;
- public final static String JSON_ATTRIBUTE2 = "json2" ;
- public final static String JSON_ATTRIBUTE3 = "json3" ;
- public final static String JSON_ATTRIBUTE4 = "json4" ;
- /**
- * 从一个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;
- }
- private static void setDataFormat2JAVA(){
- //设定日期转换格式
- JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher( new String[] { "yyyy-MM-dd" , "yyyy-MM-dd HH:mm:ss" }));
- }
- public static void main(String[] arg) throws Exception{
- String s = "{status : 'success'}" ;
- System.out.println(" object : " + JsonUtil.getJSONString(s));
- }
- }
对于java对象转换成json数据格式时,要对日期格式化常用格式,类:JsonDateValueProcessor
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import net.sf.json.JsonConfig;
- import net.sf.json.processors.JsonValueProcessor;
- /*
- * @author johncon
- * 创建日期 2008-9-10
- * json日期值处理器
- */
- public class JsonDateValueProcessor implements JsonValueProcessor {
- private String format = "yyyy-MM-dd HH:mm:ss" ;
- public JsonDateValueProcessor() {
- }
- public JsonDateValueProcessor(String format) {
- this .format = format;
- }
- public Object processArrayValue(Object value, JsonConfig jsonConfig) {
- return process(value, jsonConfig);
- }
- public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
- return process(value, jsonConfig);
- }
- private Object process( Object value, JsonConfig jsonConfig ) {
- if (value instanceof Date) {
- String str = new SimpleDateFormat(format).format((Date) value);
- return str;
- }
- return value == null ? null : value.toString();
- }
- public String getFormat() {
- return format;
- }
- public void setFormat(String format) {
- this .format = format;
- }
- }
对于对象中有明确类型的对象属性,可不管;但对象中有集合属性的,由于类型不明确,所以要先明确类型:
- String jsonString = request.getParameter( "json" );
- //增加对象中的集合属性的类型以及对象元素中的对象属性的集合属性的类型
- Map clazzMap = new HashMap();
- //secondItems是FirstDTO里的集合属性
- clazzMap.put("secondItems" , SecondDTO. class );
- //thirdItems是SecondDTO里的集合属性
- clazzMap.put("thirdItems" , ThirdDTO. class );
- FirstDTO firstDTO = (FirstDTO)JsonUtil.getDTO(jsonString, FirstDTO.class , clazzMap);
大家若对此类存意见、问题或建议,欢迎指出、指正,谢谢
发表评论
-
PO、VO、DAO、BO、POJO分别是什么?
2012-11-20 10:32 740PO:persistant object持久对 ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2012-03-30 20:57 777这个问题是我的工程中加入了Birt报表在Linux环境下运行出 ... -
Bean Validation 技术规范特性概述
2012-03-18 20:52 1150http://www.ibm.com/developerwor ... -
java List 排序 Collections.sort() 对 List 排序
2011-08-31 04:07 731//一个POJO例子 class User { Stri ... -
jdk5.0中出现的新特性
2011-02-25 12:09 726泛型(Generics) 注释 (annocation) ... -
关于 Java 对象序列化 5 件事
2011-02-22 20:45 820数年前,当和一个软件团队一起用 Java 语言编写一个应用程序 ... -
对象的序列化和反序列化
2011-02-22 20:39 819当两个进程在进行远程 ... -
我对Java Serializable(序列化)的理解和总结
2011-02-22 20:30 8851、序列化是干什么的? 简单说就是为 ... -
Java Annotation手册
2011-02-22 01:33 619作者:cleverpig(作者的Blog:http://blo ... -
Java Annotation入门
2011-02-22 01:32 819版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原 ... -
实战篇:设计自己的Annotation
2011-02-22 01:22 1076Annotation在java的世界正铺天盖地展开,有空 ... -
JDK1.5 注解(Annotations)[转]
2011-02-21 23:27 887其实说起注解语法,对于任何一个Java开发人员来说都已经耳熟能 ...
相关推荐
java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java ...
JSON与JAVA数据的转换 JSON与JAVA数据的转换 JSON与JAVA数据的转换 JSON与JAVA数据的转换 JSON与JAVA数据的转换
附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据
JSON与JAVA数据的相互转换 import net.sf.json.JSONArray; import net.sf.json.JSONException; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; 非常方便的工具类!
本Java类实现了将标准的json字符串转换成map,并将数据解析到Excel的方法,本方法简单实用,可以批量导出数据到Excel文档中
form数据与json对象的互相转换(完整版) * 将web Form 的数据转化成json字符串 * 将json对象的值解析后填入web Form 在AJAX开发中这是关键技术: 1、将form中的数据利用本工具转换成json格式的字符串,再通过ajax传...
json转换json schema
json与java的String,List等数据间的相互转换,包含所需要的jar包
JSON与JAVA对象之间的转换 少量数据使用GSON 大量数据使用jackson
使用jackson完成json与java对象的互相转换实例
Java数据格式转换成
java-任何类型转换成json数据格式 方便数据类型的转换及对数据的操作
JSONUtils 实现了json结构数据的生成与解析,json与 xml之间相互转换
JSON--JAVA相互转换数据使用方法
本文实例讲述了php array 转json及java 转换 json数据格式操作。分享给大家供大家参考,具体如下: php array 转json 数据 $arr = array( demo1 => my demo1, demo2 => array( demo2_demo1=>aaaaaaaa, demo2_...
JSON与JAVA数据的相互转换.pdfJSON与JAVA数据的相互转换.pdf
1.JSON与其他数据类型互相转换; 2.支持转换类型有:map、List等; 3.java语言实现; 4.支持不同数据类型相互转换;
net.sf.json.JSONObject ==> Java对象