1

是否可以使用 toJson(object) 序列化对象并让 toJson-parser 忽略某些方法?

我们在 User 类(getSocial - 与 Facebook 集成有关)中有一个方法,它使 toJson() 解析失败 - 如果可能,我们希望它在序列化时忽略该方法。

这可以做到吗?

4

2 回答 2

0

您可以只迭代对象并将其重写为MapList仅使用指定的值。

请注意,如果您使用 Ebean 选择对象,它会获取整个对象以及不应获取的数据(作为密码或其他凭据)

于 2012-07-09T11:26:51.083 回答
0

使用fastjson 和 PropertyFilter

示例代码

import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.alibaba.fastjson.serializer.SerializeWriter;

PropertyFilter filter = new PropertyFilter() {
    public boolean apply(Object source, String name, Object value) {
        return false;
    }
};

SerializeWriter out = new SerializeWriter();
JSONSerializer serializer = new JSONSerializer(out);
serializer.getPropertyFilters().add(filter);

A a = new A();
serializer.write(a);

String text = out.toString();
Assert.assertEquals("{}", text);

属性过滤器

PropertyFilter filter = new PropertyFilter() {
    public boolean apply(Object source, String name, Object value) {
        if("name".equals(name)) {
            return true;
        }
        return false;
    }
};

SerializeWriter out = new SerializeWriter();
JSONSerializer serializer = new JSONSerializer(out);
serializer.getPropertyFilters().add(filter);

A a = new A();
a.setName("chennp2008");
serializer.write(a);

String text = out.toString();
Assert.assertEquals("{\"name\":\"chennp2008\"}", text);

值对象:

public static class A {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
于 2012-07-09T15:01:07.320 回答