Java中BeanUtils的日期转换。程序运行失败。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中BeanUtils的日期转换。程序运行失败。相关的知识,希望对你有一定的参考价值。

@Test
public void test5() throws Exception
Map map = new HashMap();
map.put("name","aa");
map.put("password","123");
map.put("age","34");
map.put("birthday","1993-01-09");

ConvertUtils.register(new DateLocaleConverter(),Data.class);
Person p = new Person();
BeanUtils.populate(p, map);

System.out.println(p.getName());
System.out.println(p.getPassword());
System.out.println(p.getAge());
System.out.println(p.getBirthday());

参考技术A DateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
Date birthday=sdf.parse("1993-01-09");
map.put("birthday",birthday);
......
System.out.println(p.getBirthday());
参考技术B map.put("birthday","1993-01-09");

Data.class
你put进去的也不是Date类型啊 他应该就不会按照Date型的转变了追问

改了也不对。

追答

那有没有错误 贴错误出来看看啊

参考技术C 你的达特类型转错了,建议用debug调试一下。应该是类型转换的问题。

java中json和字符串互转及日期转换 练习

一:以下是用到的jar名称:

   commons-beanutils-1.6.jar

   commons-collections-3.2.1.jar

   commons-lang-2.6.jar

 commons-logging-1.1.1.jar

   ezmorph-1.0.3.jar

 json-lib-2.2.3-jdk13.jar

   json.jar

jar下载地址

  链接: https://pan.baidu.com/s/1c2Mkqli 密码: 6ems

二:练习的时候用到了内部类,所以里面有一点对内部类的使用方法。其余的就是json在java中日期转换和json和字符串之间的互转。

  用过之后感觉就和Map是差不多的

  以下是练习源代码

  1 package com.tang;
  2 
  3 import java.util.ArrayList;
  4 import java.util.Date;
  5 import java.util.HashMap;
  6 import java.util.List;
  7 import java.util.Map;
  8 
  9 import org.apache.commons.lang.time.DateFormatUtils;
 10 
 11 import net.sf.json.JSONArray;
 12 import net.sf.json.JSONObject;
 13 import net.sf.json.JsonConfig;
 14 import net.sf.json.processors.JsonValueProcessor;
 15 /**
 16  * json练习
 17  * @author tbb
 18  * @version 2017-4-8
 19  */
 20 public class DemoJsons {
 21     
 22     
 23     /**
 24      * json转换为字符串
 25      */
 26     public static void doJsonToString(){
 27         //jsonObject先转为json数组再去转换成字符串
 28         JSONObject json = new JSONObject();
 29         
 30         //向json中添加数据
 31         json.put("username", "wangl");
 32         
 33         //往json数组添加值 第一种方法
 34 //        JSONArray jsons = JSONArray.fromObject(json);
 35         
 36         //往json数组添加值 第二种方法
 37         JSONArray jsons = new JSONArray();
 38         jsons.add(json);
 39         
 40         System.out.println(jsons.toString());
 41         
 42         //注如果非要转换成jsonObject类型的字符串
 43         String jsonToString1 = jsons.toString();
 44         String jsonToString2  = jsonToString1.substring(1, jsonToString1.length()-1);
 45         System.out.println(jsonToString2);
 46         
 47     }
 48     
 49     /**
 50      * map转换为json对象
 51      */
 52     static void doMapToJson(){
 53         Map<String, Object> map = new HashMap<String, Object>();
 54         map.put("username", "zhangsan");
 55         map.put("password", "123456");
 56         
 57         //转换为json数组
 58         JSONArray array = JSONArray.fromObject(map);
 59         System.out.println(array);
 60         
 61         //转换为json对象
 62         JSONObject json = JSONObject.fromObject(map);
 63         System.out.println(json);
 64     }
 65     
 66     
 67     /**
 68      * jsonObject中的一些方法应用
 69      */
 70     public static void doJsonObjectHandle(){
 71         //外部类调用内部类
 72         DemoJsons.Person p = new DemoJsons().new Person();
 73         p.setUserName("zhangsan");
 74         p.setAge(19);
 75         
 76         //java对象转换成json对象
 77         JSONObject json = JSONObject.fromObject(p);
 78         
 79         //判断是否包含某个值   包含:true  反之:false
 80 //        System.out.println(json.containsValue(19));
 81         
 82         //判断是否包含某个key   包含:true  反之:false
 83 //        System.out.println(json.containsKey("userName"));
 84         
 85         //替换json对象中某个属性的值
 86 //        JSONObject json1 = json.element("userName", "lisi");
 87 //        System.out.println(json1);
 88         
 89         //根据key在value中增加值
 90 //        System.out.println(json.accumulate("age", 17));    //执行结果 : {"age":[19,17],"endTime":null,"userName":"zhangsan"}
 91         
 92         //和json.get("userName");返回值是相同点的 
 93 //        System.out.println(json.opt("userName"));
 94         
 95         //往json中增加新的key和value
 96 //        json.put("shuai", "shuai");
 97         
 98         //根据key  删除key-value
 99 //        json.remove("shuai");
100         System.out.println(json);
101     }
102     
103     
104     /**
105      * java对象转换成json对象
106      */
107     public static void doObject(){
108         /**
109          * 外部类调用内部类   
110          *     1:如果内部类是public  DemoJsons.Person p = new DemoJsons().new Person();
111          *  2:如果内部类是静态的              new DateJsonValueProcessor();
112          */
113         //外部类调用内部类
114         DemoJsons.Person p = new DemoJsons().new Person();
115         p.setUserName("zhangsan");
116         p.setAge(19);
117         DemoJsons.Person p2 = new DemoJsons().new Person();
118         p2.setUserName("lisi");
119         p2.setAge(19);
120         DemoJsons.Person p3 = new DemoJsons().new Person();
121         p3.setUserName("wangwu");
122         p3.setAge(19);
123         List<Person> ps = new ArrayList<Person>();
124         ps.add(p);
125         ps.add(p2);
126         ps.add(p3);
127         
128         //java对象转换成json对象
129         JSONObject json = JSONObject.fromObject(p);
130         System.out.println(json);
131         
132         //java list转换成json数组
133         JSONArray jsons = JSONArray.fromObject(ps);
134         System.out.println(jsons);
135         
136         //获取json数组中的json对象
137         JSONObject obj = jsons.getJSONObject(2);
138         System.out.println(obj);
139         
140         //获取json对象中的属性值   相当与Map(key-value) 和map取值一样
141         System.out.println(obj.getString("userName"));
142         System.out.println(obj.getInt("age"));
143     }
144     
145     
146     /**
147      * 日期转换
148      */
149     public static void demoDate(){
150         //外部类调用内部类
151         Person p = new DemoJsons().new Person();
152         p.setAge(18);
153         p.setEndTime(new Date());
154         p.setUserName("zhangsan");
155         //日期转换
156         JsonConfig jsonConfig = new JsonConfig();
157         
158         //第一种日期转换   需要新建一个类DateJsonValueProcessor
159 //        jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
160         
161         //第二种日期转换  
162         jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessor() {
163             
164             @Override
165             public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
166                 // TODO Auto-generated method stub
167                 //导包import org.apache.commons.lang.time.DateFormatUtils; jar包:commons-lang-2.6.jar
168                 return DateFormatUtils.format((Date)arg1, "yyyy-MM-dd");
169             }
170             
171             @Override
172             public Object processArrayValue(Object arg0, JsonConfig arg1) {
173                 // TODO Auto-generated method stub
174                 return null;
175             }
176         });
177         
178         JSONObject json = JSONObject.fromObject(p,jsonConfig);
179         System.out.println(json);
180     }
181     
182     
183     
184     /**
185      * 测试实体类
186      * @author tbb
187      *
188      */
189     public class Person{
190         
191         private String userName;
192         private Integer age;
193         private Date endTime;
194         
195         public Date getEndTime() {
196             return endTime;
197         }
198         public void setEndTime(Date endTime) {
199             this.endTime = endTime;
200         }
201         public String getUserName() {
202             return userName;
203         }
204         public void setUserName(String userName) {
205             this.userName = userName;
206         }
207         public Integer getAge() {
208             return age;
209         }
210         public void setAge(Integer age) {
211             this.age = age;
212         }
213         
214     }
215     
216     /**
217      * 日期格式化处理类
218      * @author tbb
219      *
220      */
221     public static class DateJsonValueProcessor implements JsonValueProcessor{
222          //json数组日期转换
223         @Override
224         public Object processArrayValue(Object arg0, JsonConfig arg1) {
225             // TODO Auto-generated method stub
226             //判断是否是Date类型
227              if (arg0 instanceof Date){  
228                     String str = DateFormatUtils.format((Date)arg0, "yyyy-MM-dd");  
229                     return str;  
230               }  
231             return null;
232         }
233         //json对象日期转换
234         @Override
235         public Object processObjectValue(String arg0, Object arg1,
236                 JsonConfig arg2) {
237             // TODO Auto-generated method stub
238             return DateFormatUtils.format((Date)arg1, "yyyy-MM-dd");
239         }
240         
241     }
242     
243     
244     /**
245      * @param args
246      */
247     public static void main(String[] args) {
248         // TODO Auto-generated method stub
249 //        doObject();
250 //        demoDate();
251         doJsonToString();
252 //        doJsonObjectHandle();
253     }
254     
255 }

以上是关于Java中BeanUtils的日期转换。程序运行失败。的主要内容,如果未能解决你的问题,请参考以下文章

java中json和字符串互转及日期转换 练习

java框架BeanUtils练习

Java:JavaBean和BeanUtils

java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换或 BeanUtils.copyProperties 不起作用

BeanUtils--02--- 创建工具类 封装request 请求数据到实体类中

BeanUtils出现Java.lang.NoClassDefFoundError解决