javajsonobject⽇期_java与json互相转换(解决⽇期问题)JSON 即 JavaScript Object Natation,它是⼀种轻量级的数据交换格式,⾮常适合于服务器与 JavaScript 的交互。本⽂主要讲解下java 和JSON之间的转换,特别是解决互相转换遇到⽇期问题的情况。
⼀、需要相关的jar包:
json-lib-xxx.jar
ezmorph-xxx.jar
commons-httpclient-xxx.jar
commons-lang-xxx.jar
commons-logging-xxx.jar
commons-collections-xxx.jar
上⾯的包可以从下⾯的连接下载:
/index.html
json-lib.sourceforge
ezmorph.sourceforge
⼆、java-》JSON1.List-》JSON
view plaincopy to clipboardprint?List list = new ArrayList();
list.add("apple");
list.add("orange");
JSONArray jarr=JSONArray.fromObject(list);
System.out.println("list->json:" +String());
打印结果:list->json:["apple","orange"]2.Map-》JSON
view plaincopy to clipboardprint?Map map = new HashMap();
map.put("name", "Michael");
map.put("baby", new String[] { "Lucy", "Lily"});
map.put("age", 30);
JSONObject jo=JSONObject.fromObject(map);
System.out.println("map->json:" +jo.toString());
打印结果:map->json:{"age":30,"name":"Michael","baby":["Lucy","Lily"]}3.bean->JSON
view plaincopy to clipboardprint?JsonBean bean= newJsonBean();
bean.setName("NewBaby");
bean.setAge(1);
bean.setBorn(newDate());
jo=JSONObject.fromObject(bean);
System.out.println("bean->json:" +jo.toString());
打印结果:bean->json:{"age":1,"born":
{"date":10,"day":3,"hours":14,"minutes":14,"month":2,"seconds":1,"time":1268201641228,"timezoneOffset":-480,"year":110},"name":"NewBaby"}
这时你会发现它把bean对象⾥的util.Date这个类型的所有属性⼀⼀转换出来。在实际运⽤过程中,⼤多数情况下我们希望能转化为yyyy-MM-dd这种格式,下⾯就讲⼀讲如何实现:
⾸先要写⼀个新的类JsonDateValueProcessor如下:
view plaincopy to clipboardprint?
/*** JSON ⽇期格式处理(java转化为JSON)
*@authorMichael sun*/
public class JsonDateValueProcessor implementsJsonValueProcessor {/*** datePattern*/
private String datePattern = "yyyy-MM-dd";/*** JsonDateValueProcessor*/
publicJsonDateValueProcessor() {super();
}/***@paramformat*/
publicJsonDateValueProcessor(String format) {super();this.datePattern =format;
}/***@paramvalue
*@paramjsonConfig
*@returnObject*/
publicObject processArrayValue(Object value, JsonConfig jsonConfig) {returnprocess(value);
}/***@paramkey
*@paramvalue
*@paramjsonConfig
*@returnObject*/
publicObject processObjectValue(String key, Object value,
JsonConfig jsonConfig) {returnprocess(value);
}/*** process
*@paramvalue
*@return
*/
privateObject process(Object value) {try{if (value instanceofDate) {
SimpleDateFormat sdf= newSimpleDateFormat(datePattern,
Locale.UK);returnsdf.format((Date) value);
}return value == null ? "": String();
}catch(Exception e) {return "";
}
}/***@returnthe datePattern*/
publicString getDatePattern() {returndatePattern;
}/***@parampDatePattern the datePattern to set*/
public voidsetDatePattern(String pDatePattern) {
datePattern=pDatePattern;
}
}
测试代码:
view plaincopy to clipboardprint?JsonBean bean= newJsonBean();
bean.setName("NewBaby");
bean.setAge(1);
bean.setBorn(newDate());
java时间日期格式转换
JsonConfig jsonConfig= newJsonConfig();
JSONObject jo=JSONObject.fromObject(bean, jsonConfig);
System.out.println("bean->json:" +jo.toString());
打印结果:bean->json:{"age":1,"born":"2010-03-10","name":"NewBaby"}
这就能得到我们想要的结果了。
三、JSON-》java1.如何把json的yyyy-MM-dd的转换为Bean中的util.Date类型:
view plaincopy to MorpherRegistry().registerMorpher(new DateMorpher(new String[] { "yyyy-MM-dd"}));
String jsonStr= "[{\"name\": \"husband\", \"age\": \"26\", \"born\": \"1984-01-12\"},{\"name\": \"wife\", \"age\": \"20\", \"born\": \"1990-05-01\"}]";
Collection list = Collection(JSONArray.fromObject(jsonStr),
JsonBean.class);//FormatDate(date,fmtstr)⽇期转字符串这⾥不再写代码了
for(JsonBean o : list) {
System.out.Born(),"yyyy-MM-dd"));
}
打印结果:1984-01-12
1990-05-01
2. JSON-》List、 Map
view plaincopy to clipboardprint?String listStr= "[\"apple\",\"orange\"]";
Collection strlist =Collection(JSONArray.fromObject(listStr));for(String str : strlist) {
System.out.println(str);
}
String mapStr= "{\"age\":30,\"name\":\"Michael\",\"baby\":[\"Lucy\",\"Lily\"]}";
Map map =(Map) Bean(JSONObject
.fromObject(mapStr), Map.class);for (Entryentry : Set()) { System.out.Key()+ " " +Value());
}
打印结果:
apple
orange
name Michael
age30baby [Lucy, Lily]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论