欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > JSONObject和Map<String, Object>的转换

JSONObject和Map<String, Object>的转换

2024/11/30 8:52:52 来源:https://blog.csdn.net/dongjing991/article/details/140377992  浏览:    关键词:JSONObject和Map<String, Object>的转换

一、前言

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

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

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

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

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

动态选择需要的参数

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();}

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

二、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
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; // 因为fastjson的JSONObject实现了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());  }  
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com