Java中JSONObject和Map<String,?Object>的轉(zhuǎn)換方法
一、前言
Java開發(fā)中出參返回和入?yún)魅敫`活的方法是使用Map<String, Object>入?yún)⒒虺鰠?,或者使用JSONObject。
1、好處,參數(shù)可變,對(duì)接口擴(kuò)展性很友好。
public ResponseData<WXModelDTO> getUserInfo(@RequestBody Map<String, Object> map )
在獲取參數(shù)的時(shí)候就可以通過
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)換是常見的操作,特別是在處理JSON數(shù)據(jù)和Java對(duì)象時(shí)。雖然 JSONObject 是來自某個(gè)庫(如org.json或com.alibaba.fastjson等)的類,而 Map<String, Object> 是Java標(biāo)準(zhǔn)庫中的一部分,但兩者之間的轉(zhuǎn)換可以通過簡(jiǎn)單的方法實(shí)現(xiàn)。
從 JSONObject 轉(zhuǎn)換到 Map<String, Object>
對(duì)于不同的JSON處理庫,轉(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與JSONArray的使用示例小結(jié)
相關(guān)文章
java datetime數(shù)據(jù)類型去掉時(shí)分秒的案例詳解
在Java中,如果我們想要表示一個(gè)日期而不包括時(shí)間(時(shí)分秒),我們通常會(huì)使用java.time包中的LocalDate類,這篇文章主要介紹了java datetime數(shù)據(jù)類型去掉時(shí)分秒,需要的朋友可以參考下2024-06-06
springbooot使用google驗(yàn)證碼的功能實(shí)現(xiàn)
這篇文章主要介紹了springbooot使用google驗(yàn)證碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
JAVA 實(shí)現(xiàn)磁盤文件加解密操作的示例代碼
這篇文章主要介紹了JAVA 實(shí)現(xiàn)磁盤文件加解密操作的示例代碼,幫助大家利用Java實(shí)現(xiàn)文件的加解密,感興趣的朋友可以了解下2020-09-09
Java使用Tesseract-Ocr識(shí)別數(shù)字
這篇文章主要介紹了Java使用Tesseract-Ocr識(shí)別數(shù)字的方法,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-04-04
微信小程序調(diào)用微信登陸獲取openid及java做為服務(wù)端示例
這篇文章主要介紹了微信小程序調(diào)用微信登陸獲取openid及java做為服務(wù)端示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
基于Java的度分秒坐標(biāo)轉(zhuǎn)純經(jīng)緯度坐標(biāo)的漂亮國基地信息管理的方法
本文以java語言為例,詳細(xì)介紹如何管理漂亮國的基地信息,為下一步全球的空間可視化打下堅(jiān)實(shí)的基礎(chǔ),首先介紹如何對(duì)數(shù)據(jù)進(jìn)行去重處理,然后介紹在java當(dāng)中如何進(jìn)行度分秒位置的轉(zhuǎn)換,最后結(jié)合實(shí)現(xiàn)原型進(jìn)行詳細(xì)的說明,感興趣的朋友跟隨小編一起看看吧2024-06-06

