我有一個抽象類具有許多具體的實現:解析動態包裹JSON陣列
public abstract Ticket {
private Long id;
private Currency fine;
...
}
public class SpeedingTicket extends Ticket {
public Currency getFine(){
// Expensive!
...
}
}
public class ParkingTicket extends Ticket {
public Currency getFine(){
// Eh, not so bad
...
}
}
當混凝土類被序列化爲JSON,它被包裹着的類簡單的名稱(speedingTickets或parkingTickets):
"_embedded": {
"speedingTickets" :
[{
"id":1,
"fine": "$190",
...,
},
{
"id":2,
"fine": "$100",
...,
}]
}
或
"_embedded": {
"parkingTickets" :[{
"id":100,
"fine": "$15",
...,
}]
}
因爲我不知道,在運行時,其中Ticket
實現我收到回來,我怎麼能解析JSON使用JSON Response
API給定的數組是用具體實現簡單名稱包裝?
我有一個破解我JSON的字符串值,並做它的字符串操作(substring,indexOf等),只返回大括號之間的內容(「[...]」)。我知道有一個更好的方式來做到這一點...
經過一番研究,我想我會嘗試以下的明天,看看它的工作原理:
JsonNode rootNode = mapper.readTree(jsonResponse);
String classImpl = Iterables.get(rootNode.get("_embedded").fields(), 0).textValue()
我然後可以說List<Ticket> tickets = response.readAsList(jsonResponse, "_embedded",classImpl)
這應該允許我將JSON解析爲列表
的可能的複製[GSON - 讀取的值與兩個不同的密鑰(http://stackoverflow.com/questions/35739713/gson-read-a-value-with-two-different-keys) – Bharatesh
我的問題是關於解析具有動態生成的關鍵字的json aray。你的鏈接是關於屬性。 – Dan