我正在尝试将此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输出?有更好的方法吗?
答案 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();
}
}