当前位置:   article > 正文

JSONObject和Map<String, Object>的转换_json转map

json转map

一、前言

Java开发中出参返回和入参传入更灵活的方法是使用Map<String, Object>入参或出参,或者使用JSONObject。

1、好处,参数可变,对接口扩展性很友好。

public ResponseData<WXModelDTO> getUserInfo(@RequestBody  Map<String, Object> map )

在获取参数的时候就可以通过

if (map.containsKey("code")) {
            code = map.get("code").toString();
        }

动态选择需要的参数

  1. public WXModelDTO getUserInfo(Map<String, Object> map) {
  2. String code = "";
  3. String wxCode = "";
  4. if (map.containsKey("code")) {
  5. code = map.get("code").toString();
  6. }
  7. if (map.containsKey("wxCode")) {
  8. wxCode = map.get("wxCode").toString();
  9. }

如果使用对象实体去传参,就需要入参的字段都有,不方便扩展

二、JSONObject和Map<String, Object>的转换

在Java中,JSONObject 和 Map<String, Object> 之间的转换是常见的操作,特别是在处理JSON数据和Java对象时。虽然 JSONObject 是来自某个库(如org.json或com.alibaba.fastjson等)的类,而 Map<String, Object> 是Java标准库中的一部分,但两者之间的转换可以通过简单的方法实现。

从 JSONObject 转换到 Map<String, Object>

对于不同的JSON处理库,转换的方法可能会有所不同,但基本原理相同。这里以 org.json 和 com.alibaba.fastjson 为例:

使用 org.json
  1. import org.json.JSONObject;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. public class JsonToMap {
  6. public static Map<String, Object> toMap(JSONObject obj) {
  7. Map<String, Object> map = new HashMap<>();
  8. Iterator<String> keysItr = obj.keys();
  9. while(keysItr.hasNext()) {
  10. String key = keysItr.next();
  11. map.put(key, obj.get(key));
  12. }
  13. return map;
  14. }
  15. // 示例
  16. public static void main(String[] args) {
  17. JSONObject jsonObject = new JSONObject();
  18. jsonObject.put("name", "John Doe");
  19. jsonObject.put("age", 30);
  20. Map<String, Object> map = toMap(jsonObject);
  21. System.out.println(map);
  22. }
  23. }
使用 com.alibaba.fastjson

Fastjson提供了更为便捷的方法:

  1. import com.alibaba.fastjson.JSONObject;
  2. import java.util.Map;
  3. public class FastJsonToMap {
  4. public static Map<String, Object> toMap(JSONObject jsonObject) {
  5. return jsonObject; // 因为fastjson的JSONObject实现了Map接口
  6. }
  7. // 示例
  8. public static void main(String[] args) {
  9. JSONObject jsonObject = new JSONObject();
  10. jsonObject.put("name", "John Doe");
  11. jsonObject.put("age", 30);
  12. Map<String, Object> map = toMap(jsonObject);
  13. System.out.println(map);
  14. }
  15. }
  1. import com.alibaba.fastjson.JSONObject;
  2. import java.util.Map;
  3. public class FastMapToJson {
  4. public static JSONObject toJson(Map<String, Object> map) {
  5. return JSONObject.parseObject(JSONObject.toJSONString(map));
  6. }
  7. // 或者直接使用
  8. public static JSONObject toJsonSimple(Map<String, Object> map) {
  9. return (JSONObject) JSONObject.toJSON(map);
  10. }
  11. // 示例
  12. public static void main(String[] args) {
  13. Map<String, Object> map = Map.of("name", "John Doe", "age", 30);
  14. JSONObject jsonObject = toJsonSimple(map);
  15. System.out.println(jsonObject.toJSONString());
  16. }
  17. }

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/910239
推荐阅读
相关标签
  

闽ICP备14008679号