我需要在我的Android应用中序列化几个对象并将它们发送到Web服务。 对象的模型类具有各种int字段,需要在发送到Web服务之前将其转换为来自各种数组的有意义的字符串表示。
所以,我假设最简单的方法是使用gson或xstream(JSON或XML - 一切都很好),但使用以下方法: - 我将所有现有的int字段标记为瞬态,并将它们从序列化中排除 - 我将为每个字段创建新的get方法。 get方法将读取相应整数的值并返回其字符串表示。
但是在2个库中的任何一个 - gson或xstream中,我无法找到基于getter而不是字段的序列化方法。请建议。
是的,我不需要重新反序列化数据。
答案 0 :(得分:0)
我认为你需要一个包装类。
考虑一下:
public class Blammy
{
private int gender;
... imagine the rest of the class.
}
public class BlammyWrapper
{
private String gender;
public BlammyWrapper(final Blammy blammy)
{
if (blammy.gender == 1)
{
gender = "Its a Boy";
}
else if (blammy.gender == 2)
{
gender = "girl";
}
else // always check your boundary conditions.
{
throw new InvalidArgumentException("Naughty blammy; unrecognized gender value");
}
public String gender()
{
return gender;
}
}
答案 1 :(得分:0)
好的,最后,我遵循了这种方法: 1.从我的应用程序代码中删除了所有资源数组 2.为每个当前数组添加了带toString的枚举 3.将所有int属性更改为相应的枚举类型 4.使用XStream 5.为通用枚举类型添加了XStream的自定义转换器,如果它找到任何类型为enum的属性,那么它将使用toString方法封送它。
感谢所有支持btw。您的所有答案和评论至少让我清楚地知道,我目前的代码架构需要大幅改进。