質問

この内部クラス

をシリアル化しようとしています
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クラスにデフォルトのパッケージアクセスがあるため、そのフィールドは宣言されているパッケージの外部のクラスには表示されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top