json请求报文里含有嵌套对象怎么转map格式且参数根据ascll排序
时间: 2023-09-15 18:18:49 浏览: 53
您可以使用JSON库将JSON请求报文转换为Map格式,然后按照ASCII码排序参数。以下是一个Java示例代码:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
public class JsonToMapSort {
public static void main(String[] args) {
// JSON请求报文
String jsonStr = "{\"name\":\"张三\",\"age\":18,\"address\":{\"city\":\"北京\",\"district\":\"海淀区\",\"street\":\"中关村\"}}";
// 将JSON请求报文转换为Map格式
Map<String, Object> paramMap = jsonToMap(jsonStr);
// 按照ASCII码排序参数
Map<String, Object> sortedMap = sortMap(paramMap);
// 输出排序后的参数
System.out.println(sortedMap);
}
/**
* 将JSON字符串转换为Map
*
* @param jsonStr JSON字符串
* @return Map
*/
public static Map<String, Object> jsonToMap(String jsonStr) {
JSONObject jsonObject = JSON.parseObject(jsonStr);
return jsonObject.getInnerMap();
}
/**
* 按照ASCII码排序Map
*
* @param paramMap Map
* @return 排序后的Map
*/
public static Map<String, Object> sortMap(Map<String, Object> paramMap) {
List<Map.Entry<String, Object>> list = new ArrayList<>(paramMap.entrySet());
// ASCII码排序
list.sort(Comparator.comparing(Map.Entry::getKey));
Map<String, Object> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, Object> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
}
```
运行结果:
```
{address={city=北京, district=海淀区, street=中关村}, age=18, name=张三}
```
注意:如果JSON请求报文中有数组,则需要特殊处理,或者使用其他的JSON库进行转换。