2016-05-08 16 views
3

別のJSONオブジェクト内のJSONオブジェクト:アクセス私は私のAndroidアプリでは、このようなJSONを持って

{ 
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtZWhkaS5hZ291emFsQGdtYWlsLmNvbSIsImV4cCI6MTQ2ODU1NTU4MjQ5MX0.A6-xNIZdbPv9mpjLO9jnnfbAeq1y-DC08SBUt2xBnYo", 
    "expires": 1468555582491, 
    "user": { 
     "imageURL": "http://app.com/images/null", 
     "email": "[email protected]", 
     "firstname": "mister", 
     "lastname": "lalalala", 
     "password": "$2a$10$VDGtxjz9w7f170Wc66OJi.1T", 
     "id": "c19349c4044d34333", 
     "language": "EN", 
     "createdAt": "2015-07-07T14:15:54.000Z", 
     "updatedAt": "2016-05-06T08:25:20.000Z" 
    } 
} 

私はこのような「トークン」にアクセスすることができます。

String json = new String(bytes); 
       JSONObject jsonObj = null; 

    try { 
      jsonObj = new JSONObject(json); 
      } catch (JSONException e) { 
      e.printStackTrace(); 
      } 

Log.d("debug", "TOKEN : " + jsonObj.getString("token")); 

しかし、私ドンたとえば、ユーザーの電子メールやファーストネームを取得する方法を知っていません。 どうすればいいですか?

おかげ

+1

可能な重複[アンドロイドでJSONをパースする方法](http://stackoverflow.com/questions/9605913/how-to-parse-json-in-android) –

答えて

4

使用getJSONObject(String name)は、 "ユーザー" オブジェクトを取得して、その結果JSONObjectにgetString(String name)を使用する:あなたはデシリアライズについては本当に適切になりたい場合は

String json = new String(bytes); 
JSONObject jsonObj = null; 
JSONObject userObj = null; 

    try { 
      jsonObj = new JSONObject(json); 
      userObj = jsonObj.getJSONObject("user"); 
      } catch (JSONException e) { 
      e.printStackTrace(); 
      } 


Log.d("debug", "firstname : " + userObj.getString("firstname")); 

PS

JSON、POJOsを使い始めることをお勧めします。こうすることで、JSON文字列を実際のJavaオブジェクトに変換して対話することができます。たとえば、JSONライブラリGSONを使用して:

レスポンスクラス:

public class Response { 
    public String token; 
    public Long expires; 
    public User user; 
} 

Userクラス:

public class User { 
    public String imageURL; 
    public String email; 
    public String firstname; 
    public String lastname; 
    public String password; 
    public String id; 
    public String language; 
    public Date createdAt; 
    public Date updatedAt; 
} 

デシリアライズコード:

Gson gson = new Gson(); 

Response response = gson.fromJson(jsonString, Response.class); 

User user = response.user; 

Log.d("debug", "firstname : " + user.firstname; 
+0

Oooohのどうもありがとうございました!それはうまくいっている! –

1

は単純に行う、

String email = jsonObj.getJSONObject("user").getString("email"); 
0

あなたはJsonObject

String yourJson = new String(your json data); 
     JSONObject userObj = null; 
     try { 
      JSONObject jsonObj = new JSONObject(yourJson); 
      userObj = jsonObj.getJSONObject("user"); 
      String email = userObj.getString("email"); 
      String firstname = userObj.getString("firstname"); 
      System.out.println("Email-> " + email); 
      System.out.println("Firstname-> " + firstname); 


     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

それとも、コピーandroid studio

Gson Format

pluginを使用して、ファイルにあなたのJSONを貼り付け、それはそのゲッターを作成することができますを使用する必要がありますし、セッターを自動的に設定します。

public class UserModel { 

    private String token; 
    private long expires; 

    private UserBean user; 

    public String getToken() { 
     return token; 
    } 

    public void setToken(String token) { 
     this.token = token; 
    } 

    public long getExpires() { 
     return expires; 
    } 

    public void setExpires(long expires) { 
     this.expires = expires; 
    } 

    public UserBean getUser() { 
     return user; 
    } 

    public void setUser(UserBean user) { 
     this.user = user; 
    } 

    public static class UserBean { 
     private String imageURL; 
     private String email; 
     private String firstname; 
     private String lastname; 
     private String password; 
     private String id; 
     private String language; 
     private String createdAt; 
     private String updatedAt; 

     public String getImageURL() { 
      return imageURL; 
     } 

     public void setImageURL(String imageURL) { 
      this.imageURL = imageURL; 
     } 

     public String getEmail() { 
      return email; 
     } 

     public void setEmail(String email) { 
      this.email = email; 
     } 

     public String getFirstname() { 
      return firstname; 
     } 

     public void setFirstname(String firstname) { 
      this.firstname = firstname; 
     } 

     public String getLastname() { 
      return lastname; 
     } 

     public void setLastname(String lastname) { 
      this.lastname = lastname; 
     } 

     public String getPassword() { 
      return password; 
     } 

     public void setPassword(String password) { 
      this.password = password; 
     } 

     public String getId() { 
      return id; 
     } 

     public void setId(String id) { 
      this.id = id; 
     } 

     public String getLanguage() { 
      return language; 
     } 

     public void setLanguage(String language) { 
      this.language = language; 
     } 

     public String getCreatedAt() { 
      return createdAt; 
     } 

     public void setCreatedAt(String createdAt) { 
      this.createdAt = createdAt; 
     } 

     public String getUpdatedAt() { 
      return updatedAt; 
     } 

     public void setUpdatedAt(String updatedAt) { 
      this.updatedAt = updatedAt; 
     } 
    } 
} 

あなたはJSON文字列がちょうど[Gson][2]オブジェクトを使用してクラスをモデル化し、このようなすべての値を取得するためにそれを解析しましたUserModel.Java。

Gson gson = new Gson(); 
     UserModel obj = gson.fromJson(yourJson,UserModel.class); 
     String email = obj.getUser().getEmail(); 
     String firstName = obj.getUser().getFirstname(); 
     String token = obj.getToken(); 
関連する問題