关于json

一,json注意事项:

1,转化为json格式是针对于对象的,默认java类的静态属性是不能转化为json格式的。但是,如果java对象,不论其实例变量,还是静态变量,如果想转化为json格式,都必须有相应的实例的setter和getter方法。java对象的属性转化为json格式的过程是根据其对象中的实例变量来判断的,并且转化哪个属性是根据实例属性的set和get方法的而不是根据属性名。

特别注意:当然也可以自己定义map或者符合json格式的对象或者通过JSONObject类创建json对象来进行json格式转换!!!

2,在java项目中,java对象转化为json格式,需要依赖几个jar包:

commons-beanutils-1.7.0.jar

    commons-collections-3.2.jar

commons-lang.jar

commons-logging-1.1.jar

ezmorph-1.0.4.jar

json-lib-2.2.2-jdk15.jar 

  struts2-json-plugin-2.3.4.jar(整合struts2的时候需要导入)

3,struts2整合json:

(1)上面的jar包得全部导入

(2)struts.xml配置文件中的的package得继承json-default,并且结果返回类型为json。并且返回result的参数<param name="root">要转化为json格式对象的java对象</param>

(3)要转化Wiejson格式的对象在action中必须有getter和setter方法

二,转化为json格式对象时的------------------------自关联问题

import java.util.Date;

public class Student {
	private String name;
	private Date date;
	
	private Student student=this;//自关联
	
	public Student getStudent() {
		return student;
	}
	public void setStudent(Student student) {
		this.student = student;
	}
	private static Integer age;
	
	public static Integer getAge() {
		return age;
	}
	public static void setAge(Integer age) {
		Student.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	
}


三,通过自定义日期的处理类,来格式化转化为json对象的日期格式

@Test//通过自定义日期的处理类,来格式化转化为json对象的日期格式
	public void test5() {
		student.setDate(new Date());
		student.setName("aaa");
		
		JsonConfig config=new JsonConfig();//转化为json对象的配置器,
		config.registerJsonValueProcessor(Date.class, new DataJsonValueProcessor());
<span style="white-space:pre">		</span>//给json对象配置器注册一个类型转换器,来格式化特定类型以一种特定方法转化为json对象
<span style="white-space:pre">		</span>第二个参数需要实现一个JsonValueProcessor接口
		System.out.println(JSONObject.fromObject(student, config));
	}



<strong><span style="font-size:18px;">import java.text.SimpleDateFormat;
import java.util.Date;

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

public class DataJsonValueProcessor implements JsonValueProcessor {
	
	private String format="yyyy-MM-dd HH:mm:ss";
	private SimpleDateFormat sdf=new SimpleDateFormat(format);
	
	@Override
	public Object processArrayValue(Object arg0, JsonConfig arg1) {
		return null;
	}

	@Override
	public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
		if(arg1==null){
			return "";
		}else if(arg1 instanceof Date){
			return sdf.format(arg1);
		}else{
			return arg1.toString();
		}
	}

}</span></strong>

四,JSONObject自定义json格式对象 JSONArray自已定义json格式对象数组

JSONObject o=new JSONObject();
		o.put("id", 123);
		o.put("name", "bbbb");
		JSONObject o2=new JSONObject();
		o2.put("id", 234);
		o2.put("name", "CCCC");
		JSONArray a=new JSONArray();
		a.add("a1");
		a.add("a2");
		
		JSONObject t=new JSONObject();
		t.put("a", a);
		t.put("o1", o);
		t.put("o2", o2);
		
		System.out.println(JSONObject.fromObject(t));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值