json与javabean之间的转换工具类

来源:互联网 发布:ots工程师知乎 编辑:程序博客网 时间:2024/05/16 09:11

import java.lang.reflect.Field;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;


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


/**
 * Json与javaBean之间的转换工具类
 * 
 * {@code 现使用json-lib组件实现
 * 需要
 * json-lib-2.4-jdk15.jar
 * ezmorph-1.0.6.jar
 * commons-collections-3.1.jar
 * commons-lang-2.0.jar
 * 支持
 * }
 */
public class JsonPluginsUtil {

/**  
* 从一个JSON 对象字符格式中得到一个java对象  
*   
* @param jsonString  
* @param beanCalss  
* @return  
*/
@SuppressWarnings("unchecked")
public static <T> T jsonToBean(String jsonString, Class<T> beanCalss) {

JSONObject jsonObject = JSONObject.fromObject(jsonString);
T bean = (T) JSONObject.toBean(jsonObject, beanCalss);

return bean;

}


/**  
* 将java对象转换成json字符串  
*
* @param bean  
* @return  
*/
public static String beanToJson(Object bean) {


JSONObject json = JSONObject.fromObject(bean);

return json.toString();


}

/**  
* 将java对象转换成json字符串  
*
* @param bean  
* @return  
*/
public static String beanToJson(Object bean, String[] _nory_changes, boolean nory) {


JSONObject json = null;

if(nory){//转换_nory_changes里的属性

Field[] fields = bean.getClass().getDeclaredFields();
String str = "";
for(Field field : fields){
// System.out.println(field.getName());
str+=(":"+field.getName());
}
fields = bean.getClass().getSuperclass().getDeclaredFields();
for(Field field : fields){
// System.out.println(field.getName());
str+=(":"+field.getName());
}
str+=":";
for(String s : _nory_changes){
str = str.replace(":"+s+":", ":");
}
json = JSONObject.fromObject(bean,configJson(str.split(":")));

}else{//转换除了_nory_changes里的属性

json = JSONObject.fromObject(bean,configJson(_nory_changes));
}

return json.toString();
}
private static JsonConfig configJson(String[] excludes) {   

           JsonConfig jsonConfig = new JsonConfig();   

           jsonConfig.setExcludes(excludes);   
//
           jsonConfig.setIgnoreDefaultExcludes(false);   
//
//            jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);   


//            jsonConfig.registerJsonValueProcessor(Date.class,   
//
//                new DateJsonValueProcessor(datePattern));   

           return jsonConfig;   


       }  

/**
* 将java对象List集合转换成json字符串  
* @param beans
* @return
*/
@SuppressWarnings("unchecked")
public static String beanListToJson(List beans) {

StringBuffer rest = new StringBuffer();

rest.append("[");

int size = beans.size();

for (int i = 0; i < size; i++) {

rest.append(beanToJson(beans.get(i))+((i<size-1)?",":""));


}

rest.append("]");

return rest.toString();


}

/**

* @param beans
* @param _no_changes
* @return
*/
@SuppressWarnings("unchecked")
public static String beanListToJson(List beans, String[] _nory_changes, boolean nory) {

StringBuffer rest = new StringBuffer();

rest.append("[");

int size = beans.size();

for (int i = 0; i < size; i++) {
try{
rest.append(beanToJson(beans.get(i),_nory_changes,nory));
if(i<size-1){
rest.append(",");
}
}catch(Exception e){
e.printStackTrace();
}
}

rest.append("]");

return rest.toString();


}


/**  
* 从json HASH表达式中获取一个map,改map支持嵌套功能  
*
* @param jsonString  
* @return  
*/
@SuppressWarnings({ "unchecked" })
public static Map jsonToMap(String jsonString) {

JSONObject jsonObject = JSONObject.fromObject(jsonString);
Iterator keyIter = jsonObject.keys();
String key;
Object value;
Map valueMap = new HashMap();


while (keyIter.hasNext()) {

key = (String) keyIter.next();
value = jsonObject.get(key).toString();
valueMap.put(key, value);

}


return valueMap;
}

/**
* map集合转换成json格式数据
* @param map
* @return
*/
public static String mapToJson(Map<String, ?> map, String[] _nory_changes, boolean nory){

String s_json = "{";

Set<String> key = map.keySet();
for (Iterator<?> it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
if(map.get(s) == null){
 
}else if(map.get(s) instanceof List<?>){
s_json+=(s+":"+JsonPluginsUtil.beanListToJson((List<?>)map.get(s), _nory_changes, nory));

}else{
JSONObject json = JSONObject.fromObject(map);
s_json += (s+":"+json.toString());;
}
 
if(it.hasNext()){
s_json+=",";
}
}


s_json+="}";
return s_json; 
}


/**  
* 从json数组中得到相应java数组  
*
* @param jsonString  
* @return  
*/
public static Object[] jsonToObjectArray(String jsonString) {

JSONArray jsonArray = JSONArray.fromObject(jsonString);

return jsonArray.toArray();


}

public static String listToJson(List<?> list) {

JSONArray jsonArray = JSONArray.fromObject(list);

return jsonArray.toString();


}


/**  
* 从json对象集合表达式中得到一个java对象列表  
*
* @param jsonString  
* @param beanClass  
* @return  
*/
@SuppressWarnings("unchecked")
public static <T> List<T> jsonToBeanList(String jsonString, Class<T> beanClass) {


JSONArray jsonArray = JSONArray.fromObject(jsonString);
JSONObject jsonObject;
T bean;
int size = jsonArray.size();
List<T> list = new ArrayList<T>(size);


for (int i = 0; i < size; i++) {


jsonObject = jsonArray.getJSONObject(i);
bean = (T) JSONObject.toBean(jsonObject, beanClass);
list.add(bean);


}

return list;


}


/**  
* 从json数组中解析出java字符串数组  
*
* @param jsonString  
* @return  
*/
public static String[] jsonToStringArray(String jsonString) {


JSONArray jsonArray = JSONArray.fromObject(jsonString);
String[] stringArray = new String[jsonArray.size()];
int size = jsonArray.size();


for (int i = 0; i < size; i++) {


stringArray[i] = jsonArray.getString(i);


}


return stringArray;
}


/**  
* 从json数组中解析出javaLong型对象数组  
*
* @param jsonString  
* @return  
*/
public static Long[] jsonToLongArray(String jsonString) {


JSONArray jsonArray = JSONArray.fromObject(jsonString);
int size = jsonArray.size();
Long[] longArray = new Long[size];

for (int i = 0; i < size; i++) {

longArray[i] = jsonArray.getLong(i);


}

return longArray;

}


/**  
* 从json数组中解析出java Integer型对象数组  
*
* @param jsonString  
* @return  
*/
public static Integer[] jsonToIntegerArray(String jsonString) {


JSONArray jsonArray = JSONArray.fromObject(jsonString);
int size = jsonArray.size();
Integer[] integerArray = new Integer[size];

for (int i = 0; i < size; i++) {

integerArray[i] = jsonArray.getInt(i);


}

return integerArray;

}


/**  
* 从json数组中解析出java Double型对象数组  
*
* @param jsonString  
* @return  
*/
public static Double[] jsonToDoubleArray(String jsonString) {


JSONArray jsonArray = JSONArray.fromObject(jsonString);
int size = jsonArray.size();
Double[] doubleArray = new Double[size];

for (int i = 0; i < size; i++) {

doubleArray[i] = jsonArray.getDouble(i);


}

return doubleArray;

}


}

0 0
原创粉丝点击