Json数据转换成Map与List格式

/** * analyzeJsonObject:(解析JSON数据为MAP类型).

* * @author zyt

* @param json

* @return

* @since JDK 1.6

*/

  public static Map<String, Object> analyzeJsonObject(JSONObject json) {

      Map ret = new HashMap();

      for (Object key : json.keySet()) {

            Object value = json.get(key);

            if (value instanceof JSONObject) {

                ret.put(String.valueOf(key), analyzeJsonObject((JSONObject) value));

            } else if (value instanceof JSONArray) {

                JSONArray array = (JSONArray) value;

                ret.put(String.valueOf(key), analyzeJsonArray(array));

          } else {

                ret.put(String.valueOf(key), value);

            }

      }

      return ret;

  }

    /**

  * analyzeJsonArray:(解析JSON数组数据为List类型).

  * @author zyt

  * @param json

    * @return

    * @since JDK 1.6

    */

    public static List<Object> analyzeJsonArray(JSONArray json) {

        List ret = new ArrayList();

        Object[] objectArray = json.toArray();

        for (Object object : objectArray) {

            if (object instanceof JSONObject) {

                ret.add(analyzeJsonObject((JSONObject) object));

            } else if (object instanceof JSONArray) {

                JSONArray array = (JSONArray) object;

                ret.add(analyzeJsonArray(array));

            } else {

                ret.add(object);

            }

        }

        return ret;

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将JSON转换为Map,有几种不同的方法可以实现。 第一种方法是使用JSONArray类,首先确保你已经将JSON数据填充到JSONArray对象中。然后,你可以使用以下代码将其转换为MapJSONArray 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类,首先也要确保你已经将JSON数据填充到JSONArray对象中。然后,你可以使用以下代码将其转换为MapJSONArray 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"); } )); 第三种方法是使用JSONObject类和JSONArray类的组合。在这种方法中,你同样需要先将JSON数据填充到JSONArray对象中。然后,你可以使用以下代码将其转换为MapJSONArray jsonArray = new JSONArray(); // 填充初始数据,此处过程省略 Map<Integer, String> flagIconMap = new HashMap<>(); 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")); }); } 这些方法中的每一种都可以将JSON转换为Map,具体使用哪种方法取决于你的需求和环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值