0

デシリアライズされたjsonオブジェクトの内部クラスから変数にアクセスしようとしています。以下は私が使用したコードです。

package jsonparser;

public class JsonParser {

private long uid = 0;
private String username, secret, filter, machine_id, access_token,
        session_key = null;


    public JsonParser() {

     }

     public static class Profile {
        private String last_name, first_name, pic_square, name = null;
        private long uid = 0;
        final JsonParser outer = JsonParser.this;

         public String getLast_name() {
        return last_name;
         }

         public void setLast_name(String last_name) {
            this.last_name = last_name;
         }

         public String getFirst_name() {
         return first_name;
         }

         public void setFirst_name(String first_name) {
          this.first_name = first_name;
         }

             public String getPic_square() {
           return pic_square;
         }

         public void setPic_square(String pic_square) {
          this.pic_square = pic_square;
         }

         public String getName() {
         return name;
         }

         public void setName(String name) {
         this.name = name;
         }

         public long getUid() {
        return uid;
         }

         public void setUid(long uid) {
        this.uid = uid;
         }

         public Profile() {
         }
       }
}

そして別のクラスでは:

JsonParser jp = gson.fromJson(Data, JsonParser.class);

データは次のようになります。

{
    "uid": 123,
    "username": "Hello",
    "secret": "87920",
    "filter": "nf",
    "machine_id": "machine_id",
    "access_token": "access_token",
    "session_key": "123e",
    "profile": {
        "last_name": "Tan",
        "uid": 123,
        "first_name": "Sally",
        "pic_square": "url.jpg",
        "name": "Sally Tan"
    }
}

jpオブジェクトからプロファイル内部クラスのlast_nameにアクセスするにはどうすればよいですか?

4

2 に答える 2

0

フィールドを追加する

private Profile profile;

public Profile getProfile() { return profile; }

外側のクラスにJsonParser。その後、あなたは使用することができます

jp.getProfile().getLast_name();

注:名前JsonParserは何も解析しないため、混乱を招きます。解析結果が保存されます。名前をConfigそのようなものに変更します。

于 2012-08-03T09:07:27.893 に答える
0

最初に削除します

final JsonParser outer = JsonParser.this; 

あなたのコードから。this静的コンテキストから参照できないため、これは不正な構成です。

それから加えて

private Profile profile;

ユーザー名、シークレットなどの他のメンバーの定義のすぐ下にあるJsonParserクラスに...

このメンバーが配置されていると、GSonパーサーはへの呼び出しでそれを埋めますgson.fromJson(...)

getterメソッドを追加して、外部からサブ構造にアクセスできます。

于 2012-08-03T09:17:10.847 に答える