// 此处使用lombok
@Data
public class User {
private String name;
private Wife wife;
private List<Children> child;
}
@Data
public class Wife {
private String name;
}
@Data
public class Children {
private String name;
}
// 普通json
// { "name": "xxx", "wife": { \"name\": \"xxx\" }, "child": [{\"name\": \"xxx\"}] }
// 扁平化json
// { "name": "xxx", "wife.name": "xxx", "child[0].name": "xxx" }
// 提供现成代码,此代码用到jar包,alibaba.fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
// 利用递归的方式
/**
* 对象转成扁平化map
* 使用方式 jsonConvertMap((JSONObject)JSONObject.toJSON(apple), map, "");
* @param json JsonObject对象
* @param map 存储map
* @param parentKey 父级key
*/
public static void jsonConvertMap(JSONObject json, Map<String, Object> map, String parentKey){
if(json != null && json.size() > 0){
for(String k : json.keySet()){
String key = k;
if(StringUtils.isNotEmpty(parentKey)) {
key = parentKey + "." + key;
}
Object v = json.get(k);
if(v instanceof JSONArray){
JSONArray jsonArray = ((JSONArray)v);
for(int i = 0; i< jsonArray.size(); i ++){
JSONObject json2 = (JSONObject) jsonArray.get(i);
jsonConvertMap(json2, map, key+"[" + i + "]" );
}
} else if(v instanceof JSONObject){
JSONObject child = (JSONObject) v;
jsonConvertMap(child, map, key);
}else{
map.put( key, v);
}
}
}
}