多层嵌套json转换为Map再转换为单层
最近在实习的时候,需要将多层嵌套的json转换为单层的json。并且把json进行格式化。于是参照网上的网上的方法使用谷歌的gson利用递归的实现了多层json转换为单层的json。如
{"code":200, "message":"ok", "data":"{\"id\":131,\"appId\":6,\"versionCode\":6014000}"}
转换为:
{
"code": 200,
"data.appId": 6,
"data.versionCode": 6014000,
"data.id": 131,
"message": "ok"
}
项目的github地址为: https://github.com/sweetcczhang/json2Map
使用gson中的JsonParser来做
/**
* 使用Gson拍平json字符串,即当有多层json嵌套时,可以把多层的json拍平为一层
* @param map
* @param json
* @param parentKey
*/
public static void parseJson2Map(Map map, String json, String parentKey){
JsonElement jsonElement = new JsonParser().parse(json);
if (jsonElement.isJsonObject()) {
JsonObject jsonObject = jsonElement.getAsJsonObject();
parseJson2Map(map,jsonObject,parentKey);
//传入的还是一个json数组
}else if (jsonElement.isJsonArray()){
JsonArray jsonArray = jsonElement.getAsJsonArray();
Iterator<JsonElement> iterator = jsonArray.iterator();
while (iterator.hasNext()){
parseJson2Map(map,iterator.next().getAsJsonOb