2017-02-25 65 views
0

首先,我很抱歉複雜的標題,我無法找到更好的方法解釋我的問題,但在這裏,我會這麼做:如何使用POJO「B」爲Gson製作POJO「A」,但僅使用「B」的一個變量作爲「A」

這裏是我的兩個的POJO:

POJO 1:

public class Station { 

private int id; 
private String name; 
private ArrayList<String> lines; 

public Station(int id, String name, ArrayList<String> lines) { 
    this.id = id; 
    this.name = name; 
    this.lines = lines; 
} 

public int getId() { 
    return id; 
} 

public String getName() { 
    return name; 
} 

public ArrayList<String> getLines() { 
    return lines; 
} 

} 

POJO 2:

public class Connection { 

private Station origin; 
private Station destination; 
private double time; 

public Connection(Station origin, Station destination, double time) { 
    this.origin = origin; 
    this.destination = destination; 
    this.time = time; 
} 

public int getOrigin() { 
    return origin.getId(); 
} 

public int getDestination() { 
    return destination.getId(); 
} 

public double getTime() { 
    return time; 
} 

} 

如您所見,我正在將「Station」POJO集成到「連接」POJO中。 如果我現在想要將Connection的一個對象轉換爲JSON字符串,它顯然也會格式化兩個工作站的「起源」和「目標」。但問題在於:我只希望「源」和「目標」由其代碼表示,而不是「名稱」或「行」等完整數據。

我該如何讓GSON忽略這些變量?

Kenta1561

+0

還有就是[DTO(HTTPS://en.wikipedia .org/wiki/Data_transfer_object)模式來處理你所問的問題:只需使用字符串而不是「Station」創建一個'ConnectionDto',或者只用一個字段創建一個'StationDto',然後將'Connection'據此。這將適用於任何序列化庫。否則,你需要一個Gson的自定義序列化程序。 –

回答

0

你不應該忽略系列化這些值。

讓他們在那裏並沒有什麼錯。

您應該解析出數據庫或UI中唯一必需的數據。

如果你沒有隻希望在連接的站ID和名稱,然後你可以有一個抽象的Connection類,只有id和name字段