使用FlexJSON序列化静态内部类

时间:2014-01-11 19:58:02

标签: java class serialization inner-classes flexjson

我正在尝试序列化这个内部类

static class functionMessage{
    String type = "function";
    String id;
    String function;
    Object parameters;

    public functionMessage(String ID, String Function, Boolean Parameters) {
        this.id = ID;
        this.function = Function;
        this.parameters = (Boolean) Parameters;
    }
}

new flexjson.JSONSerializer().exclude("*.class").serialize( 
    new functionMessage(
        "container", 
        "showContainer", 
        Boolean.TRUE
    ) 
) 

但只有{}被撤回。

如果我尝试在每个成员变量之前添加public,则会出现此错误:

flexjson.JSONException: Error trying to deepSerialize  
Caused by: java.lang.IllegalAccessException: Class flexjson.BeanProperty can not access a member of class with modifiers "public"

我试图关注example,但它没有说明Person是如何构建的,我不知道如何让类static内部类影响这是因为我还是Java的新手。

我还试图阅读Google提供的所有解决方案,但仍然没有。

flexjson.JSONSerializer()如何返回static内部类的所有成员变量?

1 个答案:

答案 0 :(得分:2)

  

但只有{}被撤回。

显然flexjson使用getter来解析JSON元素。你的班级没有。

只需添加相应的getter

public String getType() {
    return type;
}

public String getId() {
    return id;
}

public String getFunction() {
    return function;
}

public Object getParameters() {
    return parameters;
}

至于

  

如果我尝试在每个成员变量之前添加public,则会出现此错误:

这是因为你的static类具有默认的包访问权限,因此其声明的包外的任何类都不能看到它的字段。