天天看點

JSONObject轉Map方法總結有兩種方式實作

JSONObject轉Map

  • 有兩種方式實作
    • 1. 對于使用版本高于1.2.15的fastjson的可以嘗試使用JSONObject的getInnerMap()方法
    • 2. 對于老版本的fastjson可以使用遞歸的方式

有兩種方式實作

1. 對于使用版本高于1.2.15的fastjson的可以嘗試使用JSONObject的getInnerMap()方法

Map map = JSONObject.parseObject(param, Map.class);
 BehaviorData behaviorData = new BehaviorData();
 map.forEach((x, i) -> {
      if (map.get(x) != null && map.get(x).getClass().equals(JSONArray.class)) {
          ArrayList arr = new ArrayList();
          JSONArray val = JSONObject.parseArray(map.get(x).toString());
          for (int m = 0; m < val.size(); m++) {
              JSONObject val1 = JSONObject.parseObject(val.get(m).toString());
              Map<String, Object> innerMap = val1.getInnerMap();
              arr.add(innerMap);
          }
          behaviorData.put(x.toString(), arr);
      } else {
          behaviorData.put(x.toString(), map.get(x));
      }
});
           

2. 對于老版本的fastjson可以使用遞歸的方式

Map map = JSONObject.parseObject(param, Map.class);
            BehaviorData behaviorData = new BehaviorData();
  map.forEach((x, i) -> {
                final Object obj = ObjectToMap(map.get(x));
                behaviorData.put(x.toString(), obj);
            });
	private static <T> T  ObjectToMap(Object obj)
    {
           if (obj!= null && obj.getClass().equals(JSONArray.class)) {
            ArrayList arr = new ArrayList();
            JSONArray val = JSONObject.parseArray(obj.toString());
            for (int m = 0; m < val.size(); m++) {
                if(val.get(m)!=null)
                {
                    if(val.get(m).getClass().equals(JSONObject.class))
                    {
                        JSONObject val1 = JSONObject.parseObject(val.get(m).toString());
                        Map innerMap = JSONObject.parseObject(val1.toJSONString(),
                                Map.class);
                        final Object object = ObjectToMap(innerMap);
                        arr.add(object);
                    }
                    else
                    {
                        String str = val.getString(m);
                        arr.add(str);
                    }
                }
            }
            return (T) arr;
        }
        else
        {
            return (T) obj;
        }
    }
           
如需轉載請說明出處。.