JSONObject 类方便 实体类 转换为 json 对象,方便传输。
首先建立三个java类:JSON、MAttach、NoticeEntity 代码如下:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
/**
* @author clz
* @version v1.0
* @company xxx
* @date 2012-4-24
* @JSON 研究;JSONObject与JSONArray的使用
*/
/*
需要导入包如下:
json-lib-2.4-jdk15.jar
jakarta commons-lang xx
jakarta commons-beanutils xx
jakarta commons-collections xx
jakarta commons-logging xx
ezmorph xx
*/
public class JSON {
public JSON(){
}
public static void JSONObjectTest(){
JSONObject obj = new JSONObject();
//转换实体
NoticeEntity n = new NoticeEntity();
n.setClass_id("0012");
n.setClass_name("一年级");
//如果只有属性没有get set 函数,json里边也没有对应的key!
//n.setClass_address("广东茂名");//如果不设置,默认为""传递过去
//n.setClass_account(100);//如果不设置,默认为0,默认为0传递过去
//转换List<MAttach>,就是一个数组,"attach":[{"key":"value","key":"value"},{...}]形式,名称 与实体类里边为准
MAttach m1 = new MAttach();
m1.setName("附件一");
m1.setUrl("http://001");
MAttach m2 = new MAttach();
m2.setName("附件二");
m2.setUrl("http://002");
List<MAttach> mAttach = new ArrayList<MAttach>();
mAttach.add(m1);
mAttach.add(m2);
n.setList_attach(mAttach);
//转换 HashMap,"map":{"key":"value"} 形式,具体key,名称 与实体类里边为准
Map<String, String> fields = new HashMap<String, String>();
fields.put("m_id", "m_001");
fields.put("m_name", "m_002");
n.setMap(fields);
//转换 数组,效果与List<MAttach> 是一样的
MAttach[] array_attach = new MAttach[3];
MAttach am1 = new MAttach();
am1.setName("am1");
am1.setUrl("http://am1");
MAttach am2 = new MAttach();
am2.setName("am2");
am2.setUrl("http://am2");
MAttach am3 = new MAttach();
am3.setName("am3");
am3.setUrl("http://am3");
array_attach[0]=am1;
array_attach[1]=am2;
array_attach[2]=am3;
n.setArray_attach(array_attach);
JSONObject o = JSONObject.fromObject(n);
obj.put("data", o);//呵呵,有点多此一举...
System.out.println(obj.get("data"));
}
public static void main(String args[]){
JSONObjectTest();
}
}
public class MAttach {
private String name;
private String url;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
import java.util.List;
import java.util.Map;
public class NoticeEntity {
public NoticeEntity(){
}
public String class_id;
public String class_name;
public String class_address;
public int class_account;
//记录信息
private Map<String, String> map;
public List<MAttach> list_attach;
//数组,与List效果一样
public MAttach[] array_attach;
public String getClass_address() {
return class_address;
}
public void setClass_address(String classAddress) {
class_address = classAddress;
}
public int getClass_account() {
return class_account;
}
public void setClass_account(int classAccount) {
class_account = classAccount;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public String getClass_id() {
return class_id;
}
public void setClass_id(String classId) {
class_id = classId;
}
public String getClass_name() {
return class_name;
}
public void setClass_name(String className) {
class_name = className;
}
public List<MAttach> getList_attach() {
return list_attach;
}
public void setList_attach(List<MAttach> listAttach) {
list_attach = listAttach;
}
public MAttach[] getArray_attach() {
return array_attach;
}
public void setArray_attach(MAttach[] arrayAttach) {
array_attach = arrayAttach;
}
}
测试结果如下:
{"array_attach":[{"name":"am1","url":"httb://am1"},{"name":"am2","url":"httb://am2"},{"name":"am3","url":"httb://am3"}],"class_account":0,"class_address":"","class_id":"0012","class_name":"一年级","list_attach":[{"name":"附件一","url":"httb://001"},{"name":"附件二","url":"httb://002"}],"map":{"m_name":"m_002","m_id":"m_001"}}