java json與map互相轉(zhuǎn)換的示例
第一種
1.準備工作
所需jar包:json-20180130.jar
2.json轉(zhuǎn)map
用法:JSONObject.toMap();
3.map轉(zhuǎn)json
用法:new JSONObject(map);
4.舉例說明
public static void main(String[] args) {
JSONObject jo = new JSONObject();
jo.put("method_code", "JMJKK0101");
jo.put("identifier", "000000000000");
jo.put("timestamp", "");
jo.put("version", "Ver1.1");
jo.put("area_code", "00000000");
jo.put("access_type", "0");
jo.put("access_id", "0101010101");
jo.put("complete_key", "HMACSHA1");
jo.put("complete_str", "摘要加密字符串");
jo.put("param_key", "AES");
jo.put("param_set", "請求業(yè)務(wù)參數(shù)加密字符串");
// json-->Map
Map<String, Object> map = jo.toMap();
System.out.println(map);
// Map-->json
JSONObject jo2 = new JSONObject(map);
System.out.println(jo2);
}
第二種
1.準備工作
所需jar包:
commons-beanutils-1.8.3.jar;
commons-collections-3.2.1.jar;
commons-lang-2.6.jar;
commons-logging-1.1.3.jar;
ezmorph-1.0.6.jar;
json-lib-2.4-jdk15.jar
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import net.sf.json.JSONObject;
/**
* JSON數(shù)據(jù)處理工具類
* @explain
* @author Marydon
* @creationTime 2018年7月16日上午11:45:35
* @version 1.0
* @since
* @email marydon20170307@163.com
*/
public class JsonUtils {
private static Logger log = Logger.getLogger(JsonUtils.class);
}
2.json轉(zhuǎn)map
沒有現(xiàn)成的方法,需要自己進行封裝。
方式一:無序Map
/**
* 將JSONObject轉(zhuǎn)換成無序Map
* @explain
* @param jsonObject
* @return HashMap 無序Map
*/
public static Map<String, Object> toHashMap(JSONObject jsonObject) {
// 用于存儲接收到的key:value
Map<String, Object> data = new HashMap<String, Object>();
// 獲取json對象中的鍵
@SuppressWarnings("unchecked")
Set<String> keySet = jsonObject.keySet();
String key = "";
Object value = null;
// 遍歷jsonObject數(shù)據(jù),添加到Map對象
for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) {
key = iterator.next();
value = jsonObject.get(key);
data.put(key, value);
}
log.info("JSONObject-->HashMap:" + data);
return data;
}
方式二:有序Map
/**
* 將JSONObject轉(zhuǎn)換成升序Map
* @explain 將參數(shù)按照第一個字符的鍵值 ASCII 碼遞增排序(字母升序排序),如果遇到相同字符則按照第二個字符的鍵值 ASCII 碼遞增排序,
* 以此類推通過SortedMap可以實現(xiàn)
* @param jsonObject
* @return SortedMap 按ASCII碼升序排列
*/
public static Map<String, Object> toSortedMap(JSONObject jsonObject) {
// 用于存儲接收到的key:value,并按key以ASCII碼進行升序排列組合
SortedMap<String, Object> data = new TreeMap<String, Object>();
// 獲取json對象中的鍵
@SuppressWarnings("unchecked")
Set<String> keySet = jsonObject.keySet();
String key = "";
Object value = null;
// 遍歷json數(shù)據(jù),添加到SortedMap對象
for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) {
key = iterator.next();
value = jsonObject.get(key);
data.put(key, value);
}
log.info("JSONObject-->SortedMap:" + data);
return data;
}
3.map轉(zhuǎn)json
用法:JSONObject.fromObject(map);
4.舉例說明
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("method_code", "JMJKK0101");
map.put("identifier", "000000000000");
map.put("timestamp", "");
map.put("version", "Ver1.1");
map.put("area_code", "00000000");
map.put("access_type", "0");
map.put("access_id", "0101010101");
map.put("complete_key", "HMACSHA1");
map.put("complete_str", "摘要加密字符串");
map.put("param_key", "AES");
map.put("param_set", "請求業(yè)務(wù)參數(shù)加密字符串");
// Map-->json
JSONObject jo = JSONObject.fromObject(map);
System.out.println(jo);
// json-->HashMap
Map<String, Object> hashMap = JsonUtils.toHashMap(jo);
System.out.println(hashMap);
// json-->SortedMap
Map<String, Object> sortedMap = JsonUtils.toSortedMap(jo);
System.out.println(sortedMap);
}
以上就是java json與map互相轉(zhuǎn)換的示例的詳細內(nèi)容,更多關(guān)于java json與map互相轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot+Email發(fā)送郵件的實現(xiàn)示例
Spring?Boot提供了簡單而強大的郵件發(fā)送功能,本文主要介紹了SpringBoot+Email發(fā)送郵件的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-03-03
實戰(zhàn)指南:Java編寫Flink?SQL解決難題
想知道如何利用Java編寫Flink?SQL解決難題嗎?本指南將為您揭示最實用的技巧和策略,讓您輕松應(yīng)對挑戰(zhàn),跟著我們一起探索,讓Java和Flink?SQL成為您問題解決的得力助手!2023-12-12
初探Spring Cloud Gateway實戰(zhàn)
這篇文章主要介紹了創(chuàng)建網(wǎng)關(guān)項目(Spring Cloud Gateway)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-08-08
據(jù)說這個是可以擼到2089年的idea2020.2(推薦)
這篇文章主要介紹了據(jù)說這個是可以擼到2089年的idea2020.2,本教程給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

