ฉันกำลังสร้างรูปแบบที่หยาบซึ่งฉันกำลังสร้างและใช้ข้อมูล Json
ปัญหา: ข้อมูล Json ที่ฉันกำลังสร้างมีความไดนามิกมาก ฉันไม่รู้วิธีแมปมันกับคลาส 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.
ข้อมูล Json ของฉัน
ประเภทที่ 1
{
"city_master": [
{
"citycode": [
"100",
"1130385"
]
},
{
"cityname": [
"London",
"1130383"
]
},
{
"statecode": [
"512",
"1130382"
]
}
]
}
ปัญหาเกี่ยวกับโครงสร้างคือ key = "city_master" หรือคีย์ใดๆ ในรูปแบบนี้ เช่น ("citycode", "cityname" ฯลฯ) เป็นแบบไดนามิก ดังนั้นจึงไม่สามารถสร้าง pojo การแมปสำหรับคลาสนี้ได้
จากนั้นฉันลองแก้ไขคีย์ด้านนอกเป็น root และแยกวิเคราะห์เป็น Json Node เป็น
ประเภทที่ 2
{
"root": [
{
"citycode": [
"100",
"1130385"
]
},
{
"cityname": [
"London",
"1130383"
]
},
{
"statecode": [
"512",
"1130382"
]
}
]
}
ในโครงสร้างนี้ ฉันสูญเสียค่าคีย์ของฉันไป แต่สามารถเก็บไว้ที่อื่นได้
ด้วย JsonNode (Type-2) ฉันลองสิ่งนี้
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 นี้เพื่อรับคีย์-ค่าทั้งหมดนี้ได้อย่างไร หรือมีวิธีแก้ปัญหาที่มีประสิทธิภาพหรือสะอาดกว่ามาก ฉันก็ยินดีที่จะยอมรับ