基于Getter(访问器)的序列化(json或xml)

时间:2014-05-30 15:26:39

标签: java android gson

我需要在我的Android应用中序列化几个对象并将它们发送到Web服务。 对象的模型类具有各种int字段,需要在发送到Web服务之前将其转换为来自各种数组的有意义的字符串表示。

所以,我假设最简单的方法是使用gson或xstream(JSON或XML - 一切都很好),但使用以下方法: - 我将所有现有的int字段标记为瞬态,并将它们从序列化中排除 - 我将为每个字段创建新的get方法。 get方法将读取相应整数的值并返回其字符串表示。

但是在2个库中的任何一个 - gson或xstream中,我无法找到基于getter而不是字段的序列化方法。请建议。

是的,我不需要重新反序列化数据。

2 个答案:

答案 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。您的所有答案和评论至少让我清楚地知道,我目前的代码架构需要大幅改进。