【问题标题】:JSON Object Android placing issueJSON Object Android放置问题
【发布时间】:2016-07-19 09:30:28
【问题描述】:

我正在尝试将此 JSON 对象放在我的 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 输出?有没有更好的方法来做到这一点?

【问题讨论】:

  • 我不明白你..你能说出你的确切问题吗?
  • 使用 GSON 库将您的 json 转换为 ArrayList。
  • 你的意思是json库吗? @艾米
  • @RanjithKumar 如果我在 android 中有一个列表视图,我如何调用或使用 json 对象库来更新我的列表视图,如上所述?
  • 好的,我知道了。我很快就会给出解决方案

标签: java php android mysql json


【解决方案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();
    }

【讨论】:

  • 这对我不起作用。我收到此错误:org.json.JSONException: End of input at character 0 of;这也是:在 org.json.JSONTokener.syntaxError(JSONTokener.java:449) 加上更多
  • 可能是您收到空白响应,请重试并确保您收到 json 数据。
  • 非常感谢@Shree Krishna
【解决方案2】:

你可以试试这个。。

      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();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多