亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中JSONObject和Map<String,?Object>的轉(zhuǎn)換方法

 更新時(shí)間:2024年07月18日 08:34:05   作者:奮力向前123  
平時(shí)對(duì)接口時(shí),經(jīng)常遇到j(luò)son字符串和map對(duì)象之間的交互,這篇文章主要給大家介紹了關(guān)于Java中JSONObject和Map<String,?Object>的轉(zhuǎn)換方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、前言

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis如何實(shí)現(xiàn)延遲加載及緩存

    Mybatis如何實(shí)現(xiàn)延遲加載及緩存

    這篇文章主要介紹了Mybatis如何實(shí)現(xiàn)延遲加載及緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 簡(jiǎn)單了解SpringMVC與Struts2的區(qū)別

    簡(jiǎn)單了解SpringMVC與Struts2的區(qū)別

    這篇文章主要介紹了簡(jiǎn)單了解SpringMVC與Struts2的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java實(shí)戰(zhàn)技巧之if-else代碼優(yōu)化技巧大全

    java實(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-02
  • Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼

    Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼,需要的朋友可以參考下
    2018-08-08
  • Spring中如何獲取request的方法匯總及其線程安全性分析

    Spring中如何獲取request的方法匯總及其線程安全性分析

    這篇文章主要給大家介紹了關(guān)于Spring中如何獲取request的方法匯總及其線程安全性分析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • IDEA 包轉(zhuǎn)模塊的解決步驟

    IDEA 包轉(zhuǎn)模塊的解決步驟

    很多朋友遇到這樣一個(gè)問(wèn)題,直接在idea拉取代碼,發(fā)現(xiàn)創(chuàng)建的模塊包類型不一樣了,類似這樣的問(wèn)題該如何處理呢?很多朋友向小編求助,在這統(tǒng)一回答大家,需要的朋友參考下本文吧
    2021-06-06
  • java char數(shù)據(jù)類型原理解析

    java char數(shù)據(jù)類型原理解析

    這篇文章主要介紹了java char數(shù)據(jù)類型原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java中對(duì)象的序列化詳解及實(shí)例

    Java中對(duì)象的序列化詳解及實(shí)例

    這篇文章主要介紹了 Java中對(duì)象的序列化詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • java中queue接口的使用詳解

    java中queue接口的使用詳解

    本篇文章主要介紹了java中queue接口的使用詳解,對(duì)學(xué)習(xí)Queue接口有一定的幫助,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • 詳解java中BigDecimal精度問(wèn)題

    詳解java中BigDecimal精度問(wèn)題

    這篇文章主要介紹了java BigDecimal精度問(wèn)題,對(duì)精確計(jì)算感興趣的同學(xué),可以參考下
    2021-05-05

最新評(píng)論