Я создаю грубую форму, в которой я создаю и использую Json данные.
Проблема : Json данные, которые я производю, очень динамичны c. Поэтому я не знаю, как сопоставить его с моим классом pojo.
Что я пробовал
1) Using jackson library, I created structure of my json data and
tried mapping with it. It failed as in data "**Keys**" are dynamic so mapping failed.
2) I searched and found JsonNode provided by Jackson, problem with
this is my json structure has key:[{},{}] structure like this
**key-->array of objects**, so I tried parsing it with json node but failed.
My Json Data
Тип 1
{
"city_master": [
{
"citycode": [
"100",
"1130385"
]
},
{
"cityname": [
"London",
"1130383"
]
},
{
"statecode": [
"512",
"1130382"
]
}
]
}
Проблема со структурой заключается в том, что key = "city_master" или любой ключ в этом формате, например ("citycode", "cityname" et c) является динамическим. c поэтому не могу создать pojo сопоставления для этого класса.
Затем я попытался исправить внешний ключ как root, а синтаксический анализ - как Json Узел как
Тип 2
{
"root": [
{
"citycode": [
"100",
"1130385"
]
},
{
"cityname": [
"London",
"1130383"
]
},
{
"statecode": [
"512",
"1130382"
]
}
]
}
В этой структуре я теряю значение ключа, но могу сохранить его в другом месте.
С JsonNode (Тип-2) I пробовал это
String jsonString = tdObj.getTempData(); // return's Json String
TempDataTblPojo obj = new ObjectMapper().readValue(jsonString, TempDataTblPojo.class);
JsonNode jsonNode = obj.getRoot();
System.out.println("Name = " + jsonNode);
Этот класс TempDataTblPojo
public class TempDataTblPojo {
private JsonNode root;
public JsonNode getRoot() {
return root;
}
public void setRoot(JsonNode root) {
this.root = root;
}
}
Он печатает это
Name = [{"citycode":["100","1130385"]},{"cityname":["London","1130383"]},{"statecode":["512","1130382"]}]
Теперь, как разобрать этот JsonNode, чтобы получить все эти пары "ключ-значение"? Или есть более эффективное или более чистое решение, я с радостью приму его.