ในแอปพลิเคชัน gson แรกของฉันฉันหลีกเลี่ยงการใช้คลาสเพิ่มเติมเพื่อตรวจจับค่าเป็นหลักเพราะฉันใช้ json สำหรับเรื่องการกำหนดค่า
แม้จะไม่มีข้อมูล (แม้แต่หน้า gson) นั่นคือสิ่งที่ฉันพบและใช้:
เริ่มจาก
Map jsonJavaRootObject = new Gson().fromJson("{/*whatever your mega complex object*/}", Map.class)
แต่ละครั้งที่ gson เห็น {} จะสร้างแผนที่ (ที่จริงแล้วคือ gson StringMap)
แต่ละครั้งที่ gson เห็น '' มันจะสร้างสตริง
แต่ละครั้งที่ gson เห็นตัวเลขมันจะสร้าง Double
แต่ละครั้งที่ gson เห็น [] มันจะสร้าง ArrayList
คุณสามารถใช้ข้อเท็จจริงนี้ (รวมกัน) เพื่อประโยชน์ของคุณ
ในที่สุดนี่คือรหัสที่ทำให้สิ่งนั้น
Map<String, Object> javaRootMapObject = new Gson().fromJson(jsonLine, Map.class);
System.out.println(
(
(Map)
(
(List)
(
(Map)
(
javaRootMapObject.get("data")
)
).get("translations")
).get(0)
).get("translatedText")
);