Java中JSONObject和Map<String,?Object>的轉(zhuǎn)換方法
一、前言
Java開(kāi)發(fā)中出參返回和入?yún)魅敫`活的方法是使用Map<String, Object>入?yún)⒒虺鰠?,或者使用JSONObject。
1、好處,參數(shù)可變,對(duì)接口擴(kuò)展性很友好。
public ResponseData<WXModelDTO> getUserInfo(@RequestBody Map<String, Object> map )
在獲取參數(shù)的時(shí)候就可以通過(guò)
if (map.containsKey("code")) { code = map.get("code").toString(); }
動(dòng)態(tài)選擇需要的參數(shù)
public WXModelDTO getUserInfo(Map<String, Object> map) { String code = ""; String wxCode = ""; if (map.containsKey("code")) { code = map.get("code").toString(); } if (map.containsKey("wxCode")) { wxCode = map.get("wxCode").toString(); }
如果使用對(duì)象實(shí)體去傳參,就需要入?yún)⒌淖侄味加?,不方便擴(kuò)展
二、JSONObject和Map<String, Object>的轉(zhuǎn)換
在Java中,JSONObject
和 Map<String, Object>
之間的轉(zhuǎn)換是常見(jiàn)的操作,特別是在處理JSON數(shù)據(jù)和Java對(duì)象時(shí)。雖然 JSONObject
是來(lái)自某個(gè)庫(kù)(如org.json或com.alibaba.fastjson等)的類,而 Map<String, Object>
是Java標(biāo)準(zhǔn)庫(kù)中的一部分,但兩者之間的轉(zhuǎn)換可以通過(guò)簡(jiǎn)單的方法實(shí)現(xiàn)。
從 JSONObject 轉(zhuǎn)換到 Map<String, Object>
對(duì)于不同的JSON處理庫(kù),轉(zhuǎn)換的方法可能會(huì)有所不同,但基本原理相同。這里以 org.json
和 com.alibaba.fastjson
為例:
使用 org.json
import org.json.JSONObject; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class JsonToMap { public static Map<String, Object> toMap(JSONObject obj) { Map<String, Object> map = new HashMap<>(); Iterator<String> keysItr = obj.keys(); while(keysItr.hasNext()) { String key = keysItr.next(); map.put(key, obj.get(key)); } return map; } // 示例 public static void main(String[] args) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "John Doe"); jsonObject.put("age", 30); Map<String, Object> map = toMap(jsonObject); System.out.println(map); } }
使用 com.alibaba.fastjson
Fastjson提供了更為便捷的方法:
import com.alibaba.fastjson.JSONObject; import java.util.Map; public class FastJsonToMap { public static Map<String, Object> toMap(JSONObject jsonObject) { return jsonObject; // 因?yàn)閒astjson的JSONObject實(shí)現(xiàn)了Map接口 } // 示例 public static void main(String[] args) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "John Doe"); jsonObject.put("age", 30); Map<String, Object> map = toMap(jsonObject); System.out.println(map); } }
import com.alibaba.fastjson.JSONObject; import java.util.Map; public class FastMapToJson { public static JSONObject toJson(Map<String, Object> map) { return JSONObject.parseObject(JSONObject.toJSONString(map)); } // 或者直接使用 public static JSONObject toJsonSimple(Map<String, Object> map) { return (JSONObject) JSONObject.toJSON(map); } // 示例 public static void main(String[] args) { Map<String, Object> map = Map.of("name", "John Doe", "age", 30); JSONObject jsonObject = toJsonSimple(map); System.out.println(jsonObject.toJSONString()); } }
總結(jié)
到此這篇關(guān)于Java中JSONObject和Map<String, Object>轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)JSONObject和Map<String, Object>轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java如何獲取JSONObject內(nèi)指定字段key的value值
- Java中如何將String轉(zhuǎn)JSONObject
- java中如何判斷JSONObject是否存在某個(gè)Key
- Java使用fastjson對(duì)String、JSONObject、JSONArray相互轉(zhuǎn)換
- Java 如何遍歷JsonObject對(duì)象
- JAVA中JSONObject對(duì)象和Map對(duì)象之間的相互轉(zhuǎn)換
- java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)
- Java使用JSONObject需要的6個(gè)jar包下載地址
- 詳解Java中String JSONObject JSONArray List<實(shí)體類>轉(zhuǎn)換
- Java使用JSONObject操作json實(shí)例解析
- Java中的JSONObject使用方法和常用操作
相關(guān)文章
簡(jiǎn)單了解SpringMVC與Struts2的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解SpringMVC與Struts2的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11java實(shí)戰(zhàn)技巧之if-else代碼優(yōu)化技巧大全
代碼中如果if-else比較多,閱讀起來(lái)比較困難,維護(hù)起來(lái)也比較困難,很容易出bug,下面這篇文章主要給大家介紹了關(guān)于java實(shí)戰(zhàn)技巧之if-else代碼優(yōu)化技巧的相關(guān)資料,需要的朋友可以參考下2022-02-02Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼,需要的朋友可以參考下2018-08-08Spring中如何獲取request的方法匯總及其線程安全性分析
這篇文章主要給大家介紹了關(guān)于Spring中如何獲取request的方法匯總及其線程安全性分析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04