就是将json平铺的功能,如
String jsonString = "{\"a\": {\"b\": {\"c\": 1}}, \"d\": [2, 3]}";
变成
[a.b.c=1, d[0]=2, d[1]=3]
这样能得到整个json的所有key,如果需要排重,可以用Set
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class JSONUtils {
public static List<String> flattenJson(String jsonString) {
List<String> flattened = new ArrayList<>();
flattenJson(JSON.parseObject(jsonString), "", flattened);
return flattened;
}
private static void flattenJson(JSONObject obj, String prefix, List<String> flattened) {
for (String key : obj.keySet()) {
Object value = obj.get(key);
String newPrefix = prefix + key;
if (value instanceof JSONObject) {
flattenJson((JSONObject) value, newPrefix + ".", flattened);
} else if (value instanceof JSONArray) {
JSONArray arr = (JSONArray) value;
for (int i = 0; i < arr.size(); i++) {
Object arrValue = arr.get(i);
if (arrValue instanceof JSONObject) {
flattenJson((JSONObject) arrValue, newPrefix + "[" + i + "].", flattened);
} else {
flattened.add(newPrefix + "[" + i + "]=" + arrValue.toString() + "(" + arrValue.getClass().getSimpleName() + ")");
}
}
} else {
flattened.add(newPrefix + "=" + value.toString() + "(" + value.getClass().getSimpleName() + ")");
}
}
}
}