将json字符串从外层到最内层依次连接,平铺成一个List<String>

Posted 天涯泪小武

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将json字符串从外层到最内层依次连接,平铺成一个List<String>相关的知识,希望对你有一定的参考价值。

就是将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() + ")");
            
        
    


以上是关于将json字符串从外层到最内层依次连接,平铺成一个List<String>的主要内容,如果未能解决你的问题,请参考以下文章

java类与嵌套嵌套后,怎么使用最外层的类建立对象后使用内部类的方法?

排序算法专题之冒泡排序

Python笔记总结week5

冒泡排序

在移动WLAN框架里面 交换机里面的内层管理VLAN内层业务VLAN与外层管理VLAN外层VLAN有啥区别?还有含义!

JavaScript 闭包