2017-02-25 21 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字段

相关问题