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;
}
}
如需轉載請說明出處。.