JSON对象Android放置问题

时间:2016-03-31 05:20:46

标签: java php android mysql json

我正在尝试将此JSON对象放在我的Listview中的android中,但我遇到了json不匹配的问题。

这是我的服务器JSON的输出:

{"Patient 0":
{"firstName":"admir","lastName":"andrade","email":"admirmonteiro@live.com"},
    "Patient 1":
{"firstName":"alden","lastName":"andrade","email":"admirmonteiro@yahoo.com"}}

在我的Android代码中,我有以下代码:

JSONObject object = new JSONObject(result);

如何更新我的列表中的两个患者信息,而无需每次调用​​一次对象(如果有很多,我不知道如何做到这一点)?我需要做什么才能进一步更新我的listView有两列,一列是名字和姓氏,另一列是电子邮件,作为服务器节目的JSON输出?有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

这很好用,

JSONObject jObject = new JSONObject(result.trim());
Iterator<?> keys = jObject.keys();

while(keys.hasNext() ) {
    String key = (String)keys.next();
    if (jObject.get(key) instanceof JSONObject ) {

         String firstName = ((JSONObject) jObject.get(key)).getString("firstName");
         String lastName = ((JSONObject) jObject.get(key)).getString("lastName");
         String email = ((JSONObject) jObject.get(key)).getString("email");

         Log.d("jsondata","Firstname = "+firstName+"\nlastname = "+lastName+"\nemail = "+email);

    }
}

<强>更新

以下是我测试的完整代码,

    String result = "{\"Patient 0\":{\"firstName\":\"admir\",\"lastName\":\"andrade\",\"email\":\"admirmonteiro@live.com\"},\"Patient 1\":{\"firstName\":\"alden\",\"lastName\":\"andrade\",\"email\":\"admirmonteiro@yahoo.com\"}}";

    JSONObject jObject = null;
    try {
        jObject = new JSONObject(result.trim());
        Iterator<?> keys = jObject.keys();

        while(keys.hasNext() ) {
            String key = (String)keys.next();
            if (jObject.get(key) instanceof JSONObject ) {

                String firstName = ((JSONObject) jObject.get(key)).getString("firstName");
                String lastName = ((JSONObject) jObject.get(key)).getString("lastName");
                String email = ((JSONObject) jObject.get(key)).getString("email");
                Log.d("jsondata","Firstname = "+firstName+"\nlastname = "+lastName+"\nemail = "+email);
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

你可以试试这个..

      String result ="{\"Patient 0\":\n" +
            "{\"firstName\":\"admir\",\"lastName\":\"andrade\",\"email\":\"admirmonteiro@live.com\"},\n" +
            "    \"Patient 1\":\n" +
            "{\"firstName\":\"alden\",\"lastName\":\"andrade\",\"email\":\"admirmonteiro@yahoo.com\"}}";

    JSONObject data = null;
    try {
        data = new JSONObject(""+result);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    List<String> FName = new ArrayList<String>();

    for(int i=0 ; i<data.length();i++){

        try {
            JSONObject innerData = data.getJSONObject("Patient "+i);

            FName .add(innerData.getString("firstName"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }