1.jsonlib
1.1 相关jar包:
json-lib.2.4-jdk15.jar
1.2 java类2json
自定义processor处理类,并可通过style值返回不同的参数值
public class Advert implements java.io.Serializable {
// Fields
/**
* serialVersionUID
*/
private static final long serialVersionUID = -886134245592090495L;
private Long id;
private String title;
private String url;
private String picPath;
private Short status;
private Integer sortOrder;
private String createTime;
private String videoPath;
private Integer sourcePlat;
private Integer adSlotId;
private String thirdAdId;
//省略构造函数及set/get方法
}
public class AdvertProcessor implements JsonBeanProcessor {
private int style = 0;
public AdvertProcessor() {
super();
}
public AdvertProcessor(int style) {
super();
this.style = style;
}
/* (non-Javadoc)
* @see net.sf.json.processors.JsonBeanProcessor#processBean(java.lang.Object, net.sf.json.JsonConfig)
*/
@Override
public JSONObject processBean(Object bean, JsonConfig jsonConfig) {
if(!(bean instanceof Advert)) {
return new JSONObject(true);
}
Advert advert = (Advert)bean;
JSONObject obj = new JSONObject(false);
switch (this.style) {
case 0:
processTiny(obj, advert, jsonConfig);
break;
case 1:
processSimple(obj, advert, jsonConfig);
break;
case 2:
processComplex(obj, advert, jsonConfig);
break;
}
return obj;
}
private void processTiny(JSONObject obj, Advert u, JsonConfig jsonConfig) {
obj.element("id", u.getId())
.element("name", u.getTitle())
.element("photo", u.getPicPath() == null ? "" : u.getPicPath())
.element("url", u.getUrl());
}
private void processSimple(JSONObject obj, Advert u, JsonConfig jsonConfig) {
obj.element("id", u.getId())
.element("name", u.getTitle() == null ? "" : u.getTitle())
.element("photo", u.getPicPath() == null ? "" : u.getPicPath())
.element("url", u.getUrl() == null ? "" : u.getUrl())
.element("sortOrder", u.getSortOrder() == null ? 0 : u.getSortOrder());
}
private void processComplex(JSONObject obj, Advert u, JsonConfig jsonConfig) {
obj.element("id", u.getId() == null ? "" : u.getId())
.element("name", u.getTitle() == null ? "" : u.getTitle())
.element("photo", u.getPicPath() == null ? "" : u.getPicPath())
.element("url", u.getUrl() == null ? "" : u.getUrl())
.element("sortOrder", u.getSortOrder() == null ? "" : u.getSortOrder())
.element("status", u.getStatus() == null ? "" : u.getStatus())
.element("sourcePlat", u.getSourcePlat() == null ? "" : u.getSourcePlat())
.element("thirdAdId", u.getThirdAdId() == null ? "" : u.getThirdAdId())
.element("adSlotId", u.getAdSlotId() == null ? "" : u.getAdSlotId());
}
}
使用方法:
JsonConfig config=new JsonConfig();
config.registerJsonBeanProcessor(Advert.class, new AdvertProcessor(1));
List<Advert>list=null;
JSONArray ja=JSONArray.fromObject(list, config);
Advert advert=null;
JSONObject jo=JSONObject.fromObject(advert, config);
1.3 json2java
针对 {“id”:"","url":"","width":"","height":""}
定义对应java类
public class JsonPosterVO {
private int id;
private String url;
private String height;
private String width;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
}
使用方法:
单个上述对象
JSONObject jo=JSONObject .fromObject(jsonStr);
JSONObject.toBean(programJsonObject, JsonPosterVO.class);
json数组
JsonArray ja=JsonArray.fromObject(jsonStr);
JsonPosterVO[] arr=(JsonPosterVO[])JSONArray.toArray(ja,JsonPosterVO.class);
List<JsonPosterVO>poster作为一个对象的属性
Map<String, Class> mapClass = new HashMap<String, Class>();
mapClass.put("poster", JsonPosterVO.class);
JsonProgramVO[] array = (JsonProgramVO[])JSONArray.toArray(pArr, JsonProgramVO.class, mapClass);