Я хочу иметь возможность преобразовывать произвольно глубокие строки 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 и их методы.