java.lang.String类型的值无法转换为JSONObject

时间:2013-12-30 11:20:15

标签: android

你好我在下面的代码中遇到错误as- “java.lang.String类型的覆盖范围内的值无法转换为JSONObject” ..我正在获取所有其他{{1}的值但是在eventus对象上获取错误..如何将Json object转换为java.lang.String?请给出解决方案。谢谢

JsonObject

这是我的Json:

JSONObject jObj = new JSONObject(Constants.sercall.response_str);
JSONObject jObj2 = new JSONObject;
jObj2 = jObj.getJSONObject("value");

JSONObject jObj6=new JSONObject;
jObj6=jObj2.getJSONObject("reachus");
if (jObj6.has("Email")) {
activitycontactinfo = jObj6.getString("Email");
activitycontactinfo = URLDecoder.decode(activitycontactinfo);
activitycontactinfo= activitycontactinfo.replace("%20", " ");
activitycontactinfo = Constants.convertToUpperCase(activitycontactinfo);
}

2 个答案:

答案 0 :(得分:0)

此代码可让您访问“覆盖范围”字段并发送电子邮件: - 使用此代码: -

JSONObject jsonObject = new JSONObject(s);
        JSONObject reachusJson = jsonObject.getJSONObject("value")
                .getJSONObject("reachus");
        JSONArray emailArray = reachusJson.getJSONArray("Email");
        Log.e("email ", emailArray.getString(0));

答案 1 :(得分:0)

首先,请为变量使用更有意义的名称,然后查看JSON的结构,它是:

JSONObject(main) - > JSONObject(value) - > JSONObject(reachus) - > JSONArray(电子邮件) - >串

所以:

  1. 获取您的JSOBObject

    JSONObject json = new JSONObject(Constants.sercall.response_str);
    
  2. 获取“值”的JSONObject:

    JSONObject valueJson = json.getJSONObject("value");
    
  3. 获取“reachus”的JSONObject:

    JSONObject reachusJson = json.getJSONObject("reachus");
    
  4. 因为“Email”是JSONArray,首先获取JSONArray,然后获取第一个字符串(假设有一个):

    if (reachusJson.has("Email")) {
        JSONArray emailJsonArray = reachusJson.getJSONArray("Email");
    
        //rest of your code
        activitycontactinfo = emailJsonArray.getString(0);
        activitycontactinfo = URLDecoder.decode(activitycontactinfo);
        activitycontactinfo = activitycontactinfo.replace("%20", " ");
        activitycontactinfo = Constants.convertToUpperCase(activitycontactinfo);
    }
    
  5. 如果电子邮件数组为空,您可能需要添加一些检查。