美文网首页
JSON 多层一层化降维

JSON 多层一层化降维

作者: 鬼魅魑魅 | 来源:发表于2020-05-14 17:04 被阅读0次

JSON 多层一层化降维

结果如下,具体在调整,因为数组key有重复,需要加编号

//输入
{
    "payloadID": {
        "abc": "88898"
    },
    "payloadName": "QVFeederLinkPayload",
    "payloadState": 4,
    "payloadBackupState": 5,
    "subbandNum": 3,
    "subbandInfo": [
        {
            "subbandID": 1,
            "subbandType": "type1",
            "subbandFreq": 4,
            "subbandBW": 5,
            "subbandWithBeam": 6
        },
        {
            "subbandID": 2,
            "subbandType": "type2",
            "subbandFreq": 4,
            "subbandBW": 5,
            "subbandWithBeam": 5
        },
        {
            "subbandID": 3,
            "subbandType": "type3",
            "subbandFreq": 4,
            "subbandBW": 5,
            "subbandWithBeam": 5
        }
    ]
}

// 输出
json_payloadID_abc:88898
json_payloadName:QVFeederLinkPayload
json_payloadState:4
json_payloadBackupState:5
json_subbandInfo0_subbandType:type1
json_subbandInfo0_subbandWithBeam:6
json_subbandInfo0_subbandBW:5
json_subbandInfo0_subbandFreq:4
json_subbandInfo0_subbandID:1
json_subbandInfo1_subbandType:type2
json_subbandInfo1_subbandWithBeam:5
json_subbandInfo1_subbandBW:5
json_subbandInfo1_subbandFreq:4
json_subbandInfo1_subbandID:2
json_subbandInfo2_subbandType:type3
json_subbandInfo2_subbandWithBeam:5
json_subbandInfo2_subbandBW:5
json_subbandInfo2_subbandFreq:4
json_subbandInfo2_subbandID:3
json_subbandNum:3

java


    /**
     * JSON 多层降低纬度处理
     * @param prefix 前缀
     * @param json
     * @param tempList 空list即可
     * @return
     */
    public static List<Map<String,Object>> parseJson(String prefix, JSONObject json, List<Map<String, Object>> tempList){
        Iterator<String> iterator = json.keySet().iterator();
        while(iterator.hasNext()){
            String key = iterator.next();
            String value = json.getString(key);
            JSONObject child = null;
            try {
                Object o = JSON.parse(value);
                if(o instanceof JSONArray) {
                    JSONArray jsonArray = JSONObject.parseArray(value);
                    for (int i = 0; i < jsonArray.size(); i++) {
                        child =(JSONObject) jsonArray.get(i);
                        parseJson(prefix + "_" + key + i, child, tempList);
                    }
                } else if (o instanceof JSONObject) {
                    child =(JSONObject) o;
                    parseJson(prefix + "_" + key, child, tempList);
                } else {
                    // temp do nothing
                    Map<String, Object> map = new HashMap<>(1);
                    map.put(prefix + "_" + key, value);
                    tempList.add(map);

                }
            } catch (Exception e) {
                System.err.println("key:" + key + ",value:" + value);
                Map<String, Object> map = new HashMap<>(1);
                map.put(prefix + "_" + key, value);
                tempList.add(map);
            }
        }
        return tempList;
    }

TEST


        String json = "{\"payloadID\":{\"abc\":\"88898\"},\"payloadName\":\"QVFeederLinkPayload\",\"payloadState\":4,\"payloadBackupState\":5,\"subbandNum\":3,\"subbandInfo\":[{\"subbandID\":1,\"subbandType\":\"type1\",\"subbandFreq\":4,\"subbandBW\":5,\"subbandWithBeam\":6},{\"subbandID\":2,\"subbandType\":\"type2\",\"subbandFreq\":4,\"subbandBW\":5,\"subbandWithBeam\":5},{\"subbandID\":3,\"subbandType\":\"type3\",\"subbandFreq\":4,\"subbandBW\":5,\"subbandWithBeam\":5}]}";
        JSONObject jsonObject = JSON.parseObject(json);
        List<Map<String,Object>> list = new ArrayList<>();
        List<Map<String,Object>> result = OIDUtil.parseJson("json", jsonObject, list);
        for (Map<String, Object> map : result) {
            Iterator<Map.Entry<String, Object>> a= map.entrySet().iterator();
            while (a.hasNext()) {
                Map.Entry<String, Object> bb = a.next();
                System.out.println(bb.getKey() + ":" + bb.getValue());
            }
        }

相关文章

  • JSON 多层一层化降维

    JSON 多层一层化降维 结果如下,具体在调整,因为数组key有重复,需要加编号 java TEST

  • 使用标准化对数据进行处理

    标准化 PCA降维

  • 解决问题最好的方式,是升维思考,降维行动

    解决问题最好的方式,是升维思考,降维行动。 升维思考,也就是当前维度的问题,要从高一层维度的问题来找答案。 降维打...

  • 多层

    人有多层,心有多层, 事有多层,物有多层, 书有多层,木有多层, 天有多层,地有多层, 哪一层才是真你,那一层才是...

  • 吴恩达机器学习-Chapter 15 降维

    目的:降维的应用、概念、及算法。降维的3个目的:数据压缩、加速算法(缩小特征变量)、数据可视化。降维本身也是一种无...

  • 高维数据可视化方法——T-SNE

    用途 用于高维数据的降维,可视化展示,相比较pca的线性降维,再可视化显示方面显示更加友好。相似的样本由附近的点建...

  • 主成分分析-原理

    1、降维是什么 降维简单直接的说就是减少自变量的个数,利于分类结果的可视化。 2、降维的两种方法 降低自变量个数的...

  • 数据降维——PCA、SVD

    1. 数据降维 数据降维的目的:数据降维,直观地好处是维度降低了,便于计算和可视化,其更深层次的意义在于有效信息的...

  • 几个非常棒的资源

    1、GIT四维导图 Git四维导图 2、正则表达式在线工具 正则工具 3、JSON在线格式化 json格式化 4、...

  • 93-非监督学习之PCA线性降维

    为何要降维?方便可视化探索;减轻维度诅咒;缓解共线性。降维方法:PCA, t-SNE, UMAP, SOM, LL...

网友评论

      本文标题:JSON 多层一层化降维

      本文链接:https://www.haomeiwen.com/subject/gcfxohtx.html