От JSON-String до Hashmap (путь как ключ) и наоборот - PullRequest
0 голосов
/ 08 апреля 2019

Я хочу иметь возможность преобразовывать произвольно глубокие строки JSON (JSONObject) в карты и обратно. Например:

{
  "keyA": "valueA",
  "keyB": {
    "keyC": "vaueC",
    "keyD": {
      "keyE": "valueE",
      "keyF": "valueF"
    },
    "keyG": [
      {
        "keyH": {
          "keyI:": "valueE"
        }
      },
      {
        "keyJ": "valueJ"
      },
      {
        "keyK" : [
          "valueL", 
          "valueM"
        ]
      }
    ]
  }
}

Эта Json-String имеет 8 значений: A, C, E, F, E, J, L и M. Для каждого из этих значений я хочу создать запись на карте (например, HasMap) с путем к значение как ключ и значение как значение. Полученная карта будет выглядеть так:

keyA:valueA
keyB.keyC:valueC
keyB.keyD.keyE:valueE
keyB.keyD.keyF:valueF
keyB.keyG[keyH].keyI:valueE
keyB.keyG[keyJ]:valueJ
keyB.keyG[keyK]:[valueJ,valueM]

Я пытался охватить все виды дел. Включая JSONArrays, который может содержать JSONObjects. Если JSONObject B содержится в JSONObject A, строка в ключе должна быть A.B. При навигации в JSONArrays требуемый ключ указывается в квадратных скобках.

Поскольку строки Json могут быть вложены на любой глубине, я думаю, что я должен решить это рекурсивно. Тем не менее, я все еще не уверен, как подойти к этому.

Я использую только классы JSONObject и JSONArray и их методы.

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