【问题标题】:Android Json parsing first three valueAndroid Json解析前三个值
【发布时间】:2015-02-07 07:46:28
【问题描述】:

Json ::

{"userinfo":[{"id":"4","name":"Md Abu Hasan Masud","email":"abuhasanmasud@gmail.com","image":"54c0952d7c7500.607043061421907245. jpg","imgLink":"http://dbtel.net/contactmanager/uploads/54c0952d7c7500.607043061421907245.jpg","imgthumbLink":"http://dbtel.net/contactmanager/uploads/thumbs/54c0952d7c7500.607043061421907245. jpg","mobile_number":"01722761395","phone_number":"01711107287","designation":"软件工程师","department":"业务发展","关注":"DBL Telecom Ltd"}]}

这是 json。当我想通过一些字符串变量解析它时,我只得到前三个变量值,其他变量为空。

代码:

{
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        // Making a request to url and getting response
       String jsonSt = sh.makeServiceCall(url, ServiceHandler.GET);
         Log.e("Json String===", ""+jsonSt);

        if (jsonSt != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonSt);
                jSongArray = jsonObj.getJSONArray(TAG_EMPLOYEE);



                   JSONObject oneObject = jSongArray.getJSONObject(0);

                    sName = oneObject.getString(TAG_EMPLOYEE_NAME);
                    sDesignation = oneObject.getString(TAG_DESIGNATION);
                    sDepartment = oneObject.getString(TAG_DEPARTMENT);
                    sJoinDate = oneObject.getString(TAG_JOIN_DATE);
                    sImagePath = oneObject.getString(TAG_IMAGE_PATH);
                    sEmail = oneObject.getString(TAG_EMAIL);
                    sMobileNumber = oneObject.getString(TAG_MOBILE_NUMBER);
                    sPhoneNumber = oneObject.getString(TAG_PHONE_NUMBER);
                    sConcern=oneObject.getString(TAG_CONCERN);


            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        }

        return null;
    }

在这里我得到姓名、职务和部门,但我得到其他空值。我认为这是一个奇怪的问题。当我把其他变量放在前面时,其他三个变量得到了 value 。这三个为空。 实际上总之只有前三个变量获得值。其他为空。

【问题讨论】:

  • 还显示用于从 JSONObject 检索值的键
  • 按键没有问题。前三个总是有价值的。
  • 私有静态最终字符串 TAG_EMPLOYEE = "userinfo";私有静态最终字符串 TAG_EMPLOYEE_NAME = "名称";私有静态最终字符串 TAG_DESIGNATION = "指定";私有静态最终字符串 TAG_JOIN_DATE = "join_date";私有静态最终字符串 TAG_MOBILE_NUMBER = "mobile_number";私有静态最终字符串 TAG_IMAGE_PATH = "imgthumbLink";私人静态最终字符串 TAG_DEPARTMENT = "部门";私有静态最终字符串 TAG_PHONE_NUMBER = "phone_number"; private static final String TAG_EMAIL = "email";

标签: android


【解决方案1】:

这里:

sJoinDate = oneObject.getString(TAG_JOIN_DATE);

此行导致问题,因为在提供的带有join_date 的 JSON 字符串中没有可用的键。所以下一行没有执行,控制进入 catch 块,因为如果 key 不可用,那么getString 将通过JSONException 异常。

要解决此问题,请使用 JSONObject.optString,它会返回 null 提供的密钥在 JSONObject 中找不到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多