带有Data类型的bean对象与JSON对象的转换

一、将Data类型的bean对象转为JSON对象

1、添加自定义的日期格式转化类

package com.test.json;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class JsonDateValueProcessor implements JsonValueProcessor{
	private String format ="yyyy-MM-dd HH:MM:ss"; 

	@Override
	public Object processArrayValue(Object arg0, JsonConfig arg1) {
		// TODO Auto-generated method stub
		return process(arg0);
	}

	@Override
	public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
		// TODO Auto-generated method stub
		return process(arg1);
	}
	
	private Object process(Object value){  
        
        if(value instanceof Date){  
            SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.UK);  
            return sdf.format(value);  
        }  
        return value == null ? "" : value.toString();  
    }  

}

具体转化的时候的代码:

User user = new User();
user.setId(1000);
user.setName("万诗强");
user.setBirthday(new Date());

// JsonConfig是net.sf.json.JsonConfig中的这个,为固定写法
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());

JSONObject jo = JSONObject.fromObject(user, jsonConfig);
System.out.println(jo.toString());
运行结果:{"birthday":"2013-10-24 11:10:50","id":1000,"name":"万诗强"}


二、JSON字符串转化为带有Data类型的bean对象

1、可以写一个工具类MyJSONUtil,
package com.test.json;

import java.util.Date;

import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

import net.sf.json.util.JSONUtils;

public class MyJSONUtil {
	@SuppressWarnings("unchecked")
	public static <T> T jsonToBean(Class<T> clazz, String JsonString) {
		JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());
        
        JSONUtils.getMorpherRegistry().registerMorpher( 
                new DateMorpher(new String[] { "yyyy-MM-dd HH:MM:ss" })); 
        
        JSONObject jsonObject = JSONObject.fromObject(JsonString);
		T entity = (T) JSONObject.toBean(jsonObject, clazz);
        return entity;
    }

}
具体的调用如下:
User user1 = MyJSONUtil.jsonToBean(User.class, jo.toString());

System.out.println("id="+ user1.getId()
		+ "\tname="
		+ user1.getName()
		+ "\tbirthday="
		+ new SimpleDateFormat("yyyy-MM-dd HH:MM:ss").format(user1.getBirthday()));
运行结果:id=1000 name=万诗强 birthday=2013-10-24 11:10:50



User对象中加入List<Subject> subjectList属性(课程列表)后的JSON生成与解析示例:
public class TestJSON {
	public static void main(String[] args) {
		// 初始化数据
		User user = new User();
		user.setId(1000);
		user.setName("万诗强");
		user.setBirthday(new Date());
		// 创建课程列表
		List<Subject> subjectList = new ArrayList<Subject>();
		Subject subject1 = new Subject();
		subject1.setId(11);
		subject1.setName("java课程");
		subject1.setCreateTime(new Date());
		Subject subject2 = new Subject();
		subject2.setId(12);
		subject2.setName("android课程");
		subject2.setCreateTime(new Date());
		subjectList.add(subject1);
		subjectList.add(subject2);
		user.setSubjectList(subjectList);

		// JsonConfig是net.sf.json.JsonConfig中的这个,为固定写法
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.registerJsonValueProcessor(Date.class,
				new JsonDateValueProcessor());

		JSONObject userJo = JSONObject.fromObject(user, jsonConfig);
		System.out.println(userJo.toString());
		// 从JSON字符串中解析User对象
		User user1 = MyJSONUtil.jsonToBean(User.class, userJo.toString());
		// 从JSON字符串中解析Subject对象
		List<Subject> subjectListFromJSONString = new ArrayList<Subject>();
		JSONArray subjectListJa = JSONArray.fromObject(userJo
				.getString("subjectList"));
		for (int i = 0; i < subjectListJa.size(); i++) {
			Subject subject = MyJSONUtil.jsonToBean(Subject.class,
					subjectListJa.getJSONObject(i).toString());
			subjectListFromJSONString.add(subject);
		}
		// 把解析出来的subjectList赋值给User1中的属性
		user1.setSubjectList(subjectListFromJSONString);
		// 打印结果
		System.out.println("id="
				+ user1.getId()
				+ "\tname="
				+ user1.getName()
				+ "\tbirthday="
				+ new SimpleDateFormat("yyyy-MM-dd HH:MM:ss").format(user1
						.getBirthday()) + "\tsubjectList="
				+ user1.getSubjectList());

		for (Subject subject : user1.getSubjectList()) {
			System.out.println("subjectList:id="
					+ subject.getId()
					+ "\tname="
					+ subject.getName()
					+ "\tcreateTime="
					+ new SimpleDateFormat("yyyy-MM-DD HH:MM:ss")
							.format(subject.getCreateTime()));
		}

	}

}




User对象中加入List<Subject> subjectList属性(课程列表)后的JSON生成与解析示例:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值