日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

json转java对象_json转java对象

發布時間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 json转java对象_json转java对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、DTO:Data Transfer Object,數據傳送對象

2、對于日期格式的問題,也已經處理

3、json-lib-2.2.2-jdk13.jar (2.1在日期數組 json->java有問題)

工具類JsonUtil代碼如下:

Java代碼

public class JsonUtil {

/**頁面傳至后臺時,json數據在request的參數名稱*/

public final static String JSON_ATTRIBUTE = "json";

public final static String JSON_ATTRIBUTE1 = "json1";

public final static String JSON_ATTRIBUTE2 = "json2";

public final static String JSON_ATTRIBUTE3 = "json3";

public final static String JSON_ATTRIBUTE4 = "json4";

/**

* 從一個JSON 對象字符格式中得到一個java對象,形如:

* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}

* @param object

* @param clazz

* @return

*/

public static Object getDTO(String jsonString, Class clazz){

JSONObject jsonObject = null;

try{

setDataFormat2JAVA();

jsonObject = JSONObject.fromObject(jsonString);

}catch(Exception e){

e.printStackTrace();

}

return JSONObject.toBean(jsonObject, clazz);

}

/**

* 從一個JSON 對象字符格式中得到一個java對象,其中beansList是一類的集合,形如:

* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},

* beansList:[{}, {}, ...]}

* @param jsonString

* @param clazz

* @param map 集合屬性的類型 (key : 集合屬性名, value : 集合屬性類型class) eg: ("beansList" : Bean.class)

* @return

*/

public static Object getDTO(String jsonString, Class clazz, Map map){

JSONObject jsonObject = null;

try{

setDataFormat2JAVA();

jsonObject = JSONObject.fromObject(jsonString);

}catch(Exception e){

e.printStackTrace();

}

return JSONObject.toBean(jsonObject, clazz, map);

}

/**

* 從一個JSON數組得到一個java對象數組,形如:

* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]

* @param object

* @param clazz

* @return

*/

public static Object[] getDTOArray(String jsonString, Class clazz){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

Object[] obj = new Object[array.size()];

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

JSONObject jsonObject = array.getJSONObject(i);

obj[i] = JSONObject.toBean(jsonObject, clazz);

}

return obj;

}

/**

* 從一個JSON數組得到一個java對象數組,形如:

* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]

* @param object

* @param clazz

* @param map

* @return

*/

public static Object[] getDTOArray(String jsonString, Class clazz, Map map){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

Object[] obj = new Object[array.size()];

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

JSONObject jsonObject = array.getJSONObject(i);

obj[i] = JSONObject.toBean(jsonObject, clazz, map);

}

return obj;

}

/**

* 從一個JSON數組得到一個java對象集合

* @param object

* @param clazz

* @return

*/

public static List getDTOList(String jsonString, Class clazz){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

List list = new ArrayList();

for(Iterator iter = array.iterator(); iter.hasNext();){

JSONObject jsonObject = (JSONObject)iter.next();

list.add(JSONObject.toBean(jsonObject, clazz));

}

return list;

}

/**

* 從一個JSON數組得到一個java對象集合,其中對象中包含有集合屬性

* @param object

* @param clazz

* @param map 集合屬性的類型

* @return

*/

public static List getDTOList(String jsonString, Class clazz, Map map){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

List list = new ArrayList();

for(Iterator iter = array.iterator(); iter.hasNext();){

JSONObject jsonObject = (JSONObject)iter.next();

list.add(JSONObject.toBean(jsonObject, clazz, map));

}

return list;

}

/**

* 從json HASH表達式中獲取一個map,該map支持嵌套功能

* 形如:{"id" : "johncon", "name" : "小強"}

* 注意commons-collections版本,必須包含org.apache.commons.collections.map.MultiKeyMap

* @param object

* @return

*/

public static Map getMapFromJson(String jsonString) {

setDataFormat2JAVA();

JSONObject jsonObject = JSONObject.fromObject(jsonString);

Map map = new HashMap();

for(Iterator iter = jsonObject.keys(); iter.hasNext();){

String key = (String)iter.next();

map.put(key, jsonObject.get(key));

}

return map;

}

/**

* 從json數組中得到相應java數組

* json形如:["123", "456"]

* @param jsonString

* @return

*/

public static Object[] getObjectArrayFromJson(String jsonString) {

JSONArray jsonArray = JSONArray.fromObject(jsonString);

return jsonArray.toArray();

}

/**

* 把數據對象轉換成json字符串

* DTO對象形如:{"id" : idValue, "name" : nameValue, ...}

* 數組對象形如:[{}, {}, {}, ...]

* map對象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}

* @param object

* @return

*/

public static String getJSONString(Object object) throws Exception{

String jsonString = null;

//日期值處理器

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());

if(object != null){

if(object instanceof Collection || object instanceof Object[]){

jsonString = JSONArray.fromObject(object, jsonConfig).toString();

}else{

jsonString = JSONObject.fromObject(object, jsonConfig).toString();

}

}

return jsonString == null ? "{}" : jsonString;

}

private static void setDataFormat2JAVA(){

//設定日期轉換格式

JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));

}

public static void main(String[] arg) throws Exception{

String s = "{status : 'success'}";

System.out.println(" object : " + JsonUtil.getJSONString(s));

}

}

public class JsonUtil {

/**頁面傳至后臺時,json數據在request的參數名稱*/

public final static String JSON_ATTRIBUTE = "json";

public final static String JSON_ATTRIBUTE1 = "json1";

public final static String JSON_ATTRIBUTE2 = "json2";

public final static String JSON_ATTRIBUTE3 = "json3";

public final static String JSON_ATTRIBUTE4 = "json4";

/**

* 從一個JSON 對象字符格式中得到一個java對象,形如:

* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}

* @param object

* @param clazz

* @return

*/

public static Object getDTO(String jsonString, Class clazz){

JSONObject jsonObject = null;

try{

setDataFormat2JAVA();

jsonObject = JSONObject.fromObject(jsonString);

}catch(Exception e){

e.printStackTrace();

}

return JSONObject.toBean(jsonObject, clazz);

}

/**

* 從一個JSON 對象字符格式中得到一個java對象,其中beansList是一類的集合,形如:

* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},

* beansList:[{}, {}, ...]}

* @param jsonString

* @param clazz

* @param map 集合屬性的類型 (key : 集合屬性名, value : 集合屬性類型class) eg: ("beansList" : Bean.class)

* @return

*/

public static Object getDTO(String jsonString, Class clazz, Map map){

JSONObject jsonObject = null;

try{

setDataFormat2JAVA();

jsonObject = JSONObject.fromObject(jsonString);

}catch(Exception e){

e.printStackTrace();

}

return JSONObject.toBean(jsonObject, clazz, map);

}

/**

* 從一個JSON數組得到一個java對象數組,形如:

* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]

* @param object

* @param clazz

* @return

*/

public static Object[] getDTOArray(String jsonString, Class clazz){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

Object[] obj = new Object[array.size()];

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

JSONObject jsonObject = array.getJSONObject(i);

obj[i] = JSONObject.toBean(jsonObject, clazz);

}

return obj;

}

/**

* 從一個JSON數組得到一個java對象數組,形如:

* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]

* @param object

* @param clazz

* @param map

* @return

*/

public static Object[] getDTOArray(String jsonString, Class clazz, Map map){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

Object[] obj = new Object[array.size()];

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

JSONObject jsonObject = array.getJSONObject(i);

obj[i] = JSONObject.toBean(jsonObject, clazz, map);

}

return obj;

}

/**

* 從一個JSON數組得到一個java對象集合

* @param object

* @param clazz

* @return

*/

public static List getDTOList(String jsonString, Class clazz){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

List list = new ArrayList();

for(Iterator iter = array.iterator(); iter.hasNext();){

JSONObject jsonObject = (JSONObject)iter.next();

list.add(JSONObject.toBean(jsonObject, clazz));

}

return list;

}

/**

* 從一個JSON數組得到一個java對象集合,其中對象中包含有集合屬性

* @param object

* @param clazz

* @param map 集合屬性的類型

* @return

*/

public static List getDTOList(String jsonString, Class clazz, Map map){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

List list = new ArrayList();

for(Iterator iter = array.iterator(); iter.hasNext();){

JSONObject jsonObject = (JSONObject)iter.next();

list.add(JSONObject.toBean(jsonObject, clazz, map));

}

return list;

}

/**

* 從json HASH表達式中獲取一個map,該map支持嵌套功能

* 形如:{"id" : "johncon", "name" : "小強"}

* 注意commons-collections版本,必須包含org.apache.commons.collections.map.MultiKeyMap

* @param object

* @return

*/

public static Map getMapFromJson(String jsonString) {

setDataFormat2JAVA();

JSONObject jsonObject = JSONObject.fromObject(jsonString);

Map map = new HashMap();

for(Iterator iter = jsonObject.keys(); iter.hasNext();){

String key = (String)iter.next();

map.put(key, jsonObject.get(key));

}

return map;

}

/**

* 從json數組中得到相應java數組

* json形如:["123", "456"]

* @param jsonString

* @return

*/

public static Object[] getObjectArrayFromJson(String jsonString) {

JSONArray jsonArray = JSONArray.fromObject(jsonString);

return jsonArray.toArray();

}

/**

* 把數據對象轉換成json字符串

* DTO對象形如:{"id" : idValue, "name" : nameValue, ...}

* 數組對象形如:[{}, {}, {}, ...]

* map對象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}

* @param object

* @return

*/

public static String getJSONString(Object object) throws Exception{

String jsonString = null;

//日期值處理器

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());

if(object != null){

if(object instanceof Collection || object instanceof Object[]){

jsonString = JSONArray.fromObject(object, jsonConfig).toString();

}else{

jsonString = JSONObject.fromObject(object, jsonConfig).toString();

}

}

return jsonString == null ? "{}" : jsonString;

}

private static void setDataFormat2JAVA(){

//設定日期轉換格式

JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));

}

public static void main(String[] arg) throws Exception{

String s = "{status : 'success'}";

System.out.println(" object : " + JsonUtil.getJSONString(s));

}

}

對于java對象轉換成json數據格式時,要對日期格式化常用格式,類:JsonDateValueProcessor

Java代碼

import java.text.SimpleDateFormat;

import java.util.Date;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

/*

* @author johncon

* 創建日期 2008-9-10

* json日期值處理器

*/

public class JsonDateValueProcessor implements JsonValueProcessor {

private String format = "yyyy-MM-dd HH:mm:ss";

public JsonDateValueProcessor() {

}

public JsonDateValueProcessor(String format) {

this.format = format;

}

public Object processArrayValue(Object value, JsonConfig jsonConfig) {

return process(value, jsonConfig);

}

public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {

return process(value, jsonConfig);

}

private Object process( Object value, JsonConfig jsonConfig ) {

if (value instanceof Date) {

String str = new SimpleDateFormat(format).format((Date) value);

return str;

}

return value == null ? null : value.toString();

}

public String getFormat() {

return format;

}

public void setFormat(String format) {

this.format = format;

}

}

import java.text.SimpleDateFormat;

import java.util.Date;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

/*

* @author johncon

* 創建日期 2008-9-10

* json日期值處理器

*/

public class JsonDateValueProcessor implements JsonValueProcessor {

private String format = "yyyy-MM-dd HH:mm:ss";

public JsonDateValueProcessor() {

}

public JsonDateValueProcessor(String format) {

this.format = format;

}

public Object processArrayValue(Object value, JsonConfig jsonConfig) {

return process(value, jsonConfig);

}

public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {

return process(value, jsonConfig);

}

private Object process( Object value, JsonConfig jsonConfig ) {

if (value instanceof Date) {

String str = new SimpleDateFormat(format).format((Date) value);

return str;

}

return value == null ? null : value.toString();

}

public String getFormat() {

return format;

}

public void setFormat(String format) {

this.format = format;

}

}

對于對象中有明確類型的對象屬性,可不管;但對象中有集合屬性的,由于類型不明確,所以要先明確類型:

Java代碼

String jsonString = request.getParameter("json");

//增加對象中的集合屬性的類型以及對象元素中的對象屬性的集合屬性的類型

Map clazzMap = new HashMap();

//secondItems是FirstDTO里的集合屬性

clazzMap.put("secondItems", SecondDTO.class);

//thirdItems是SecondDTO里的集合屬性

clazzMap.put("thirdItems", ThirdDTO.class);

FirstDTO firstDTO = (FirstDTO)JsonUtil.getDTO(jsonString, FirstDTO.class, clazzMap);

2010年8月20日 15:25

1405

0

2

44

總結

以上是生活随笔為你收集整理的json转java对象_json转java对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。