Serializando uma classe interna estática com FlexJSON
-
26-12-2019 - |
Pergunta
Estou tentando serializar esta classe interna
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;
}
}
com
new flexjson.JSONSerializer().exclude("*.class").serialize(
new functionMessage(
"container",
"showContainer",
Boolean.TRUE
)
)
se apenas {}
é devolvido.
Se eu tentar adicionar public
antes de cada variável de membro, ocorre este erro:
flexjson.JSONException: Error trying to deepSerialize
Caused by: java.lang.IllegalAccessException: Class flexjson.BeanProperty can not access a member of class with modifiers "public"
Eu tentei seguir o exemplo, mas não mostra como Person
é construído, e não sei como tornar a classe um static
a classe interna afeta isso porque ainda sou bastante novo em Java.
Também tentei ler todas as soluções fornecidas para esse erro fornecidas pelo Google, mas ainda nada.
Como pode flexjson.JSONSerializer()
retornar todas as variáveis-membro de um static
classe interna?
Solução
mas apenas {} é retornado.
Aparentemente flexjson
usa getters para resolver elementos JSON.Sua turma não tem nenhum.
Basta adicionar getters correspondentes
public String getType() {
return type;
}
public String getId() {
return id;
}
public String getFunction() {
return function;
}
public Object getParameters() {
return parameters;
}
Quanto a
Se eu tentar adicionar public antes de cada variável de membro, ocorrerá este erro:
Isso porque o seu static
class tem acesso ao pacote padrão e seus campos, portanto, não são visíveis para nenhuma classe fora do pacote em que foi declarada.