package com.yaphis.util.Json;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONStringer;
/**
* 使用jsonlib.jar来解析生成json 需要引入jsonlib.jar和ezmorph-1.0.6.jar
*
* @author huangchunhui 2014年6月3日 下午8:07:36
*/
public class JsonLibUtil {
/**
* 从一个JSON对象字符格式中得到一个java对象 说明:Bean的无参构造函数一定要写, 否则会报异常
*
* @param json
* @param clazz
* @return
*/
@SuppressWarnings("rawtypes")
public static Object jsonToObject(String json, Class clazz) {
Object pojo;
JSONObject jsonObject = JSONObject.fromObject(json);
pojo = JSONObject.toBean(jsonObject, clazz);
return pojo;
}
/**
* 从一个JSON对象字符格式中得到一个java对象 说明:Bean的无参构造函数一定要写, 否则会报异常
*
* @param json
* @param clazz
* @return
*/
@SuppressWarnings("rawtypes")
public static Object jsonToObject(String json, Class clazz, Map<String, Class> classMap) {
Object pojo;
JSONObject jsonObject = JSONObject.fromObject(json);
pojo = JSONObject.toBean(jsonObject, clazz, classMap);
return pojo;
}
/**
* 将java对象转换成json字符串
*
* @param obj
* @return
*/
public static String objectToJson(Object obj) {
JSONObject json;
json = JSONObject.fromObject(obj);
return json.toString();
}
/**
* 从json HASH表达式中获取一个map
*
* @param json
* @return
*/
public static Map<String, Object> jsonToMap(String json) {
JSONObject jsonObject = JSONObject.fromObject(json);
Map<String, Object> map = new HashMap<String, Object>();
for (Iterator<?> it = jsonObject.keys(); it.hasNext();) {
String key = (String) it.next();
Object value = jsonObject.get(key);
map.put(key, value);
}
return map;
}
/**
* 从Map对象得到Json字串
*
* @param map
* @return
*/
@SuppressWarnings("rawtypes")
public static String mapToJson(Map map) {
JSONObject json = JSONObject.fromObject(map);
return json.toString();
}
/**
* 从json字串中得到相应java数组
*
* @param jsonString like "[\"李斯\",100]"
* @return
*/
public static Object[] jsonToArray(String json) {
JSONArray jsonArray = JSONArray.fromObject(json);
return jsonArray.toArray();
}
/**
* 用JSONStringer构造一个JsonString
*
* @param m
* @return
*/
@SuppressWarnings({ "rawtypes", "unused" })
public static String buildJsonString(Map m) {
JSONStringer stringer = new JSONStringer();
stringer.object();
for (Object key : m.keySet()) {
stringer.key((String) key).value((String) m.get(key));
}
stringer.key("phone");
stringer.array();// begin nesting a array
stringer.value("13998098000");
stringer.value("8765432");
stringer.object();// nestring object in array
stringer.key("ppcall");
stringer.value(53881);
stringer.endObject();
stringer.value("13990980980");
stringer.endArray();// end nesting a array
stringer.endObject();
// 或者
String jsonString = new JSONStringer().object().key("JSON").value("Hello, World!").key("Flex").value("OK").endObject().toString();
return stringer.toString();
}
}
转载于:https://my.oschina.net/yaphis/blog/352884
本文介绍了一个基于 JSONLib 的 Java 工具类 JsonLibUtil,提供了将 JSON 字符串转换为 Java 对象、Map 和数组的方法,同时也支持将 Java 对象、Map 转换为 JSON 字符串。
1万+

被折叠的 条评论
为什么被折叠?



