你好我在下面的代码中遇到错误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);
}
答案 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(电子邮件) - >串
所以:
获取您的JSOBObject
JSONObject json = new JSONObject(Constants.sercall.response_str);
获取“值”的JSONObject:
JSONObject valueJson = json.getJSONObject("value");
获取“reachus”的JSONObject:
JSONObject reachusJson = json.getJSONObject("reachus");
因为“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);
}
如果电子邮件数组为空,您可能需要添加一些检查。