2015-09-11 184 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); 

现在你可以很容易地使用这个类来进一步使用。 希望这有助于。