您的位置:首页 > 移动开发 > Objective-C

对象转JSONArray,JSONObject[包括对象中日期格式化,属性过滤]

2016-05-04 15:53 519 查看
创建时间转换器

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";

public JsonDateValueProcessor() {
super();
}

public JsonDateValueProcessor(String format) {
super();
this.format = format;
}

public Object processArrayValue(Object paramObject,
JsonConfig paramJsonConfig) {
return process(paramObject);
}

public Object processObjectValue(String paramString, Object paramObject,
JsonConfig paramJsonConfig) {
return process(paramObject);
}

private Object process(Object value){
if(value instanceof Date){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
return sdf.format(value);
}
return value == null ? "" : value.toString();
}

}


创建对象属性过滤器,并能对对象中date格式字段进行字符串格式转换

import java.lang.reflect.Field;
import java.util.Date;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* <p>Title: 保留属性</p>
* <p>Description:保留JAVABEAN的指定属性</p>
*
*/
public class IgnoreFieldProcessorImpl implements PropertyFilter {

Log log = LogFactory.getLog(this.getClass());

/**
* 保留的属性名称
*/
private String[] fields;

/**
* 空参构造方法<br/>
* 默认不忽略集合
*/
public IgnoreFieldProcessorImpl() {
// empty
}

/**
* 构造方法
* @param fields 保留属性名称数组
*/
public IgnoreFieldProcessorImpl(String[] fields) {
this.fields = fields;
}

/**
* 构造方法
* @param fields    保留属性名称数组
*/
public IgnoreFieldProcessorImpl(boolean ignoreColl, String[] fields) {
this.fields = fields;
}

public boolean apply(Object source, String name, Object value) {
Field declaredField = null;

// 保留设定的属性
if(fields != null && fields.length > 0) {
if(juge(fields,name)) {
return false;
} else {
return true;

}
}

return false;
}
/**
* 保留相等的属性
* @param s
* @param s2
* @return
*/
public boolean juge(String[] s,String s2){
boolean b = false;
for(String sl : s){
if(s2.equals(sl)){
b=true;
}
}
return b;
}

/**
* 获取保留的属性
* @param fields
*/
public String[] getFields() {
return fields;
}

/**
* 设置保留的属性
* @param fields
*/
public void setFields(String[] fields) {
this.fields = fields;
}

/**
* 保留字段转换json 对象
* @param configs 保留字段名称
* @param entity 需要转换实体
* @return
*/
public static JSONObject JsonConfig(String[] configs,Object entity){
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new IgnoreFieldProcessorImpl(true, configs)); // 保留的属性<span style="font-family: Arial, Helvetica, sans-serif;">configs</span>
config.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor()); // 将对象中的日期进行格式化
JSONObject fromObject = JSONObject.fromObject(entity, config );
return fromObject;

}

/**
* 保留字段转换json 数组
* @param configs 保留字段名称
* @param entity 需要转换实体
* @return
*/
public static JSONArray ArrayJsonConfig(String[] configs,Object entity){
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new IgnoreFieldProcessorImpl(true, configs)); //<span style="font-family: Arial, Helvetica, sans-serif;">保留的属性</span><span style="font-family: Arial, Helvetica, sans-serif;">configs</span>
config.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
JSONArray fromObject = JSONArray.fromObject(entity, config );
return fromObject;
}

}


调用方法,
例:将exam对象转换成JSONObject并只保留需要的字段

JSONObject ex = IgnoreFieldProcessorImpl.JsonConfig(new String[]{"id","examName","examDate"}, exam);


例:将list<Course>对象转换成JSONArray并只保留Course中需要保留的字段

JSONArray listj=IgnoreFieldProcessorImpl.ArrayJsonConfig(new String[]{"id","courseName","examDate","remark"}, list);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: