详解Java实现JSONArray转Map的三种实现方式

本文只是自己常用的三种,自己总结一下,不是只有这三种,杠精走开;

JSONArray数据

[
  {
      "flagType": 1,
      "flagIcon": "1.jpg"
  },
  {
      "flagType": 2,
      "flagIcon": "2.jpg"
  },
  {
      "flagType": 3,
      "flagIcon": "3.jpg"
  },
  {
      "flagType": 4,
      "flagIcon": "4.jpg"
  }
]

要转成目标数据

{
  1:"1.jpg",
  2:"2.jpg",
  3:"3.jpg",
  4:"4.jpg"
}

 

第一种

JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
List<JSONObject> jsonObjectList = jsonArray.toJavaList(JSONObject.class);
Map<Integer, String> map = jsonObjectList.stream().filter(Objects::nonNull).collect(Collectors.toMap(item -> item.getInteger("flagType"), item -> item.getString("flagIcon")));

 

第二种

JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
Map<Integer, String> map = jsonArray.stream().filter(Objects::nonNull)
              .collect(Collectors.toMap(
                      object -> {
                          JSONObject item = (JSONObject) object;
                          return item.getInteger("flagType");
                      },
                      object -> {
                          JSONObject item = (JSONObject) object;
                          return item.getString("flagIcon");
                      }
              ));

 

第三种

Map<Integer, String> flagIconMap = new HashMap<>();

JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
if (jsonArray != null && !jsonArray.isEmpty()) {
  jsonArray.forEach(object -> {
      if (object == null) {
          return;
      }
      JSONObject jsonObject = (JSONObject) object;
      if (jsonObject.getInteger("flagType") == null) {
          return;
      }
      flagIconMap.put(jsonObject.getInteger("flagType"),jsonObject.getString("flagIcon"));
  });
}

关于详解Java实现JSONArray转Map的三种实现方式的文章就介绍至此,更多相关Java JSONArray转Map内容请搜索编程教程以前的文章,希望以后支持编程教程

需要用到的知识:注解、AOP、ExpiringMap(带有有效期的映射)我们可以自定义注解,把注解添加到我们的接口上。定义一个切面,执行方法前去ExpiringMap查询该IP在规 ...