赞
踩
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();
- }
如果使用对象实体去传参,就需要入参的字段都有,不方便扩展
在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
为例:
- 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);
- }
- }
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());
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。