FlexJsonを使用した静的内部クラスのシリアル化
-
26-12-2019 - |
質問
この内部クラス
をシリアル化しようとしています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"
.
解決
しかし{}のみが保護されています。
明らかにflexjson
はゲッターを使用してJSON要素を解決します。あなたのクラスにはありません。
対応するゲッターを追加する
public String getType() {
return type;
}
public String getId() {
return id;
}
public String getFunction() {
return function;
}
public Object getParameters() {
return parameters;
}
.
各メンバー変数の前にパブリックを追加しようとすると、このエラーが発生します。
static
クラスにデフォルトのパッケージアクセスがあるため、そのフィールドは宣言されているパッケージの外部のクラスには表示されません。
所属していません StackOverflow