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());
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.lang.ClassCastException:[Ljava.lang.Object;无法强制转换或 BeanUtils.copyProperties 不起作用