Как разобрать Dynami c json и сохранить в таблице - PullRequest
0 голосов
/ 03 апреля 2020

Есть ли способ проанализировать json и сохранить данные в таблицу. Я получаю ответ от нескольких API и хочу сгладить структуру json и сохранить ее в базе данных, чтобы я мог создавать отчеты по ней. Я использую библиотеку Джексона, чтобы сгладить json.

Map flattenJson = JsonFlattener.flattenAsMap(finalout);

сплющенный json структура:

         {</p>

<pre><code>    "planWorkspaceList[0].id":"5e6f40fb7977be7b59bdd6f6"

    "planWorkspaceList[0].planId":"5e6f40b465dc7170a4a91b85"
    "planWorkspaceList[0].version":1
    "planWorkspaceList[0].planWorkspaceProduct.planProductId":"5e6f40fb7977be7b59bdd6f5"
    "planWorkspaceList[0].planWorkspaceProduct.lineClassId":"fT6lBmYjRgmqoQo48P_H-g"
    "planWorkspaceList[0].planWorkspaceProduct.commercialTypeId":"SPJb3Pb0QvK-knpXwxpy1A"
    "planWorkspaceList[0].planWorkspaceProduct.spotLengthId":"1ecrktlESZGlnMoP5su1Fw"
    "planWorkspaceList[0].planWorkspaceProduct.lineNo":1
    "planWorkspaceList[0].planWorkspaceProduct.lineId":"02aa009c-694b-4d72-a7ae-761e8e2b5a74"
    "planWorkspaceList[0].planWorkspaceProduct.channelId":"G7k5_-HWRIuF0-afe7q-rQ"
    "planWorkspaceList[0].planWorkspaceProduct.productId":"5e54fc4a4d82f119a2d7785f"
    "planWorkspaceList[0].planWorkspaceProduct.ratecardId":null
    "planWorkspaceList[0].rates.quarterName":"1Q20"
    "planWorkspaceList[0].rates.planWeekRates[0].week":"20200106"
    "planWorkspaceList[0].rates.planWeekRates[0].weekValue.unitRates.units":19
    "planWorkspaceList[0].rates.planWeekRates[0].weekValue.unitRates.rate":0.0
    "planWorkspaceList[0].rates.planWeekRates[0].weekValue.unitRates.ratePercent":0.0
    "planWorkspaceList[0].rates.planWeekRates[1].week":"20200113"
    "planWorkspaceList[0].rates.planWeekRates[1].weekValue.unitRates.units":13
    "planWorkspaceList[0].rates.planWeekRates[1].weekValue.unitRates.rate":0.0
    "planWorkspaceList[0].rates.planWeekRates[1].weekValue.unitRates.ratePercent":0.0
    "planWorkspaceList[0].goals":null
    "planWorkspaceList[1].id":"5e453bafa25d1a6262d66afe"
    "planWorkspaceList[1].planId":"5e453b98a25d1a6262d66af7"
    "planWorkspaceList[1].planWorkspaceProduct.planProductId":"5e453bafa25d1a6262d66afa"
    "planWorkspaceList[1].planWorkspaceProduct.lineClassId":"hiSUhfVbT5mqbxbmE8TN6w"
    "planWorkspaceList[1].planWorkspaceProduct.commercialTypeId":"Z3DViBRsR1KFSW-V1r_Crw"
    "planWorkspaceList[1].planWorkspaceProduct.spotLengthId":"6Qydhbe3S7atGKlcAZSUtQ"
    "planWorkspaceList[1].planWorkspaceProduct.lineNo":1
    "planWorkspaceList[1].rates.quarterName":"2020Q2"
    "planWorkspaceList[1].rates.planWeekRates[0].week":"20200106"
    "planWorkspaceList[1].rates.planWeekRates[0].weekValue.unitRates.units":11
    "planWorkspaceList[1].rates.planWeekRates[0].weekValue.unitRates.rate":0.0
    "planWorkspaceList[1].rates.planWeekRates[0].weekValue.unitRates.ratePercent":0.0
    "planWorkspaceList[1].rates.planWeekRates[1].week":"20200113"
    "planWorkspaceList[1].rates.planWeekRates[1].weekValue.unitRates.units":0
    "planWorkspaceList[1].rates.planWeekRates[1].weekValue.unitRates.rate":0.0
    "planWorkspaceList[1].rates.planWeekRates[1].weekValue.unitRates.ratePercent":0.0
    "planWorkspaceList[1].rates.planWeekRates[2].week":"20200608"
    "planWorkspaceList[1].rates.planWeekRates[2].weekValue.unitRates.units":5
    "planWorkspaceList[1].rates.planWeekRates[2].weekValue.unitRates.rate":0.0
    "planWorkspaceList[1].rates.planWeekRates[2].weekValue.unitRates.ratePercent":0.0
    "planWorkspaceList[1].goals":null
    }
</code>

Я должен быть в состоянии l oop через сглаженный вывод, и я могу передать ключи из некоторой таблицы метаданных, так что мне не нужно писать код, определяющий c - json ответ. json вход `

             { 
                 "planWorkspaceList": [{
                    "id": "5e6f40fb7977be7b59bdd6f6",
                    "planId": "5e6f40b465dc7170a4a91b85",
                    "version": 1,
                    "planWorkspaceProduct": {
                        "planProductId": "5e6f40fb7977be7b59bdd6f5",
                        "lineClassId": "fT6lBmYjRgmqoQo48P_H-g",
                        "commercialTypeId": "SPJb3Pb0QvK-knpXwxpy1A",
                        "spotLengthId": "1ecrktlESZGlnMoP5su1Fw",
                        "lineNo": 1,
                        "lineId": "02aa009c-694b-4d72-a7ae-761e8e2b5a74",
                        "channelId": "G7k5_-HWRIuF0-afe7q-rQ",
                        "productId": "5e54fc4a4d82f119a2d7785f",
                        "ratecardId": null
                    },
                    "rates": {
                        "quarterName": "1Q20",
                        "planWeekRates": [{
                                "week": "20200106",
                                "weekValue": {
                                    "unitRates": {
                                        "units": 19,
                                        "rate": 0.0,
                                        "ratePercent": 0.0
                                    }
                                }</p>

<pre><code>                    },
                    {
                            "week": "20200113",
                            "weekValue": {
                                "unitRates": {
                                    "units": 13,
                                    "rate": 0.0,
                                    "ratePercent": 0.0
                                }
                            }
                        }
                    ]
                },
                "goals": null
            },
            {
                "id": "5e453bafa25d1a6262d66afe",
                "planId": "5e453b98a25d1a6262d66af7",
                "planWorkspaceProduct": {
                    "planProductId": "5e453bafa25d1a6262d66afa",
                    "lineClassId": "hiSUhfVbT5mqbxbmE8TN6w",
                    "commercialTypeId": "Z3DViBRsR1KFSW-V1r_Crw",
                    "spotLengthId": "6Qydhbe3S7atGKlcAZSUtQ",
                    "lineNo": 1
                },
                "rates": 
            {
                    "quarterName": "2020Q2",


                    "planWeekRates": [{
                            "week": "20200106",
                            "weekValue": {
                                "unitRates": {
                                    "units": 11,
                                    "rate": 0.0,
                                    "ratePercent": 0.0
                                }
                            }
                        }, {
                            "week": "20200113",
                            "weekValue": {
                                "unitRates": {
                                    "units": 0,
                                    "rate": 0.0,
                                    "ratePercent": 0.0
                                }
                            }
                        }, {
                            "week": "20200608",
                            "weekValue": {
                                "unitRates": {
                                    "units": 5,
                                    "rate": 0.0,
                                    "ratePercent": 0.0
                                }
                            }
                        }
                    ]
                },
                "goals": null
            }
        ]
    }
      

output format: + -------------------------- + -------------------------- + --------- + ------------ -------------- + ------------------------ + ---------- -------------- + ------------------------ + -------- + - ------------------------------------- + ------------ ------------ + -------------------------- + ---------- - + ------------- + ---------- + ------- + ------ + ------- ------ + ------- + - + | id | planId | версия | planProductId | lineClassId | CommercialTypeId | spotLengthId | lineNo | lineId | идентификатор канала | productId | ratecardId | quarName | неделя | единицы | Оценить | RatePercent | цели | | + -------------------------- + ---------------------- ---- + --------- + -------------------------- + -------- ---------------- + ------------------------ + -------- ---------------- + -------- + ------------------------ -------------- + ------------------------ + ---------- ---------------- + ------------ + ------------- + ------ ---- + ------- + ------ + ------------- + ------- + - + | 5e6f40fb7977be7b59bdd6f6 | 5e6f40b465dc7170a4a91b85 | 1 | 5e6f40fb7977be7b59bdd6f5 | fT6lBmYjRgmqoQo48P_H-g | SPJb3Pb0QvK-knpXwxpy1A | 1ecrktlESZGlnMoP5su1Fw | 1 | 02aa009 c -694b-4d72-a7ae-761e8e2b5a74 | G7k5_-HWRIuF0-afe7q-rQ | 5e54fc4a4d82f119a2d7785f | ноль | 1Q20 | 20200106 | 19 | 0 | 0 | ноль | | + -------------------------- + ---------------------- ---- + --------- + -------------------------- + -------- ---------------- + ------------------------ + -------- ---------------- + -------- + ------------------------ -------------- + ------------------------ + ---------- ---------------- + ------------ + ------------- + ------ ---- + ------- + ------ + ------------- + ------- + - + | 5e6f40fb7977be7b59bdd6f6 | 5e6f40b465dc7170a4a91b85 | 1 | 5e6f40fb7977be7b59bdd6f5 | fT6lBmYjRgmqoQo48P_H-g | SPJb3Pb0QvK-knpXwxpy1A | 1ecrktlESZGlnMoP5su1Fw | 1 | 02aa009 c -694b-4d72-a7ae-761e8e2b5a75 | G7k5_-HWRIuF0-afe7q-rQ | 5e54fc4a4d82f119a2d7785f | ноль | 1Q20 | 20200113 | 13 | 0 | 0 | ноль | | + -------------------------- + ---------------------- ---- + --------- + -------------------------- + -------- ---------------- + ------------------------ + -------- ---------------- + -------- + ------------------------ -------------- + ------------------------ + ---------- ---------------- + ------------ + ------------- + ------ ---- + ------- + ------ + ------------- + ------- + - + | 5e453bafa25d1a6262d66afe | 5e453b98a25d1a6262d66af7 | ноль | 5e453bafa25d1a6262d66afa | hiSUhfVbT5mqbxbmE8TN6w | Z3DViBRsR1KFSW-V1r_Crw | 6Qydhbe3S7atGKlcAZSUtQ | 1 | ноль | ноль | ноль | ноль | 2020Q2 | 20200106 | 11 | 0 | 0 | ноль | | + -------------------------- + ---------------------- ---- + --------- + -------------------------- + -------- ---------------- + ------------------------ + -------- ---------------- + -------- + ------------------------ -------------- + ------------------------ + ---------- ---------------- + ------------ + ------------- + ------ ---- + ------- + ------ + ------------- + ------- + - + | 5e453bafa25d1a6262d66afe | 5e453b98a25d1a6262d66af7 | ноль | 5e453bafa25d1a6262d66afa | hiSUhfVbT5mqbxbmE8TN6w | Z3DViBRsR1KFSW-V1r_Crw | 6Qydhbe3S7atGKlcAZSUtQ | 1 | ноль | ноль | ноль | ноль | 2020Q2 | 20200608 | 5 | | 0 | ноль | | + -------------------------- + ---------------------- ---- + --------- + -------------------------- + -------- ---------------- + ------------------------ + -------- ---------------- + -------- + ------------------------ -------------- + ------------------------ + ---------- ---------------- + ------------ + ------------- + ------ ---- + ------- + - сильный текст ---- + ------------- + ------- + - +

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...