使用Jackson实现StringToList<Map>

前提

因为 fastjson 频频爆出漏洞,所以项目禁止使用 fastjson ,改用 JacksonGson

方法例子
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public static List<Map<String, Object>> StringToList(String str) {
        List<Map<String, Object>> list = new ArrayList<>();
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            CollectionLikeType type = objectMapper.getTypeFactory().constructCollectionLikeType(List.class, Map.class);
            list = objectMapper.readValue(str, type);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            logger.info("数据解析异常,非json标准格式数据!");
        }
        return list;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将字符串转换为List<Map<String, List<Integer>>>类型的数组,你可以按照以下步骤进行实现: 1. 首先,将字符串解析为JSON格式对象。你可以使用JSON库(如Jackson或Gson)来完成这一步骤。假设你已经将字符串解析为一个名为"jsonObject"的JSON对象。 2. 接下来,创建一个List<Map<String, List<Integer>>>类型的数组。我们可以称之为"result"。 3. 遍历"jsonObject"中的每个元素。对于每个元素,执行以下步骤: - 创建一个新的Map<String, List<Integer>>类型的对象,我们可以称之为"map"。 - 遍历当前元素中的每个键值对。对于每个键值对,执行以下步骤: - 将键转换为String类型,我们可以称之为"key"。 - 将值转换为List<Integer>类型,我们可以称之为"value"。 - 将"key"和"value"添加到"map"中。 - 将"map"添加到"result"数组中。 4. 当遍历完所有元素后,"result"数组将包含所有转换后的数据。 以下是一个示例代码: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { String jsonString = "your_json_string"; ObjectMapper objectMapper = new ObjectMapper(); try { // Step 1: Parse the jsonString to a JSON object Object jsonObject = objectMapper.readValue(jsonString, Object.class); // Step 2: Create a List<Map<String, List<Integer>>> array List<Map<String, List<Integer>>> result = new ArrayList<>(); // Step 3: Iterate over each element in the jsonObject for (Map.Entry<String, Object> entry : ((Map<String, Object>) jsonObject).entrySet()) { Map<String, List<Integer>> map = new HashMap<>(); // Step 3.1: Iterate over each key-value pair in the current element for (Map.Entry<String, Object> innerEntry : ((Map<String, Object>) entry.getValue()).entrySet()) { String key = innerEntry.getKey(); List<Integer> value = (List<Integer>) innerEntry.getValue(); // Step 3.2: Add the key-value pair to the map map.put(key, value); } // Step 3.3: Add the map to the result array result.add(map); } // Step 4: The result array now contains the converted data for (Map<String, List<Integer>> map : result) { System.out.println(map); } } catch (Exception e) { e.printStackTrace(); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值