2015-09-11 81 views
0

我有這種格式的代碼。任何人都可以幫助我如何讀取數組?我需要讀取聯繫人數組。在java/Android中解析JSON

{ 
    "success": true, 
    "contacts": [ 
    { 
    "username": "ceema", 
    "profile": { 
    "name": "Ceema S", 
    "email": "[email protected]", 
    "address": "No 143, gangaeyam, Maikkad P O, Kerala", 
    "phone": { 
     "mobile": "3333", 
     "home": "2222", 
     "office": "6666" 
    } 
    } 
}, 
{ 
    "username": "hari", 
    "profile": { 
    "name": "Harikrishnan V S", 
    "email": "[email protected]", 
    "address": "No 143, harihome, Maikkad P O, Kerala", 
    "phone": { 
     "mobile": "3333", 
     "home": "2222", 
     "office": "6666" 
    } 
    } 
}, 
{ 
    "username": "pranav", 
    "profile": { 
    "name": "Pranav Mohan", 
    "email": "[email protected]", 
    "address": "No 143, harihome, Maikkad P O, Kerala", 
    "phone": { 
     "mobile": "3333", 
     "home": "2222", 
     "office": "6666" 
    } 
    } 
} 
] 
} 

我嘗試這樣:

if (jsonStr != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 

       // Getting JSON Array node 
       contacts = jsonObj.getJSONArray(TAG_CONTACTS); 

       // looping through All Contacts 
       for (int i = 0; i < contacts.length(); i++) { 
        JSONObject c = contacts.getJSONObject(i); 

        //String id = c.getString(TAG_NAME); 
        String name = c.getString(TAG_NAME); 
        String email = c.getString(TAG_EMAIL); 
        String address = c.getString(TAG_ADDRESS); 
        //String gender = c.getString(TAG_GENDER); 

        // Phone node is JSON Object 
        JSONObject phone = c.getJSONObject(TAG_PHONE); 
        String mobile = phone.getString(TAG_PHONE_MOBILE); 
        String home = phone.getString(TAG_PHONE_HOME); 
        String office = phone.getString(TAG_PHONE_OFFICE); 

jsonstr是從網站JSON響應。 我需要閱讀嵌套的聯繫人,並將其填充到

+2

什麼是錯誤? – Rustam

回答

1

此jsonstr是從該網站json響應。我需要閱讀嵌套的 聯繫人並將其填充到

你明白了吧。你正在尋找的對象是內部輪廓

JSONObject c = contacts.getJSONObject(i); 
JSONObject profile = c.getJSONObject("profile"); 

,並使用profile而不是c,看名字,電話和其他人的

+0

我只是想獲得c對象,所以纔得到錯誤。謝謝 – Jeet

+0

不客氣 – Blackbelt

0

最簡單的方法是從json獲取POJO類使用http://www.jsonschema2pojo.org/

您將獲得所有必需的類將此json轉換爲POJO c lass, 和更高版本,您可以使用谷歌的Gson庫將json轉換爲Object或其他方式。

想一想,如果您將Contact類作爲父類,那麼您可以輕鬆使用Gson的fromjson方法。

Gson gson=new Gson(); 
Contact contact = gson.fromJson(json_string, Contact.class); 

現在你可以很容易地使用這個類來進一步使用。 希望這有助於。