如何删除此错误->;Json解析错误:java.lang.String类型响应的值success can';不能转换为JSONArray

如何删除此错误->;Json解析错误:java.lang.String类型响应的值success can';不能转换为JSONArray,java,android,json,Java,Android,Json,运行我的应用程序时出现JSON解析错误 下面提到了我面临错误的代码和json url MyHttpHandler myhttp=newmyhttphandler(); 字符串Newurl=url+“auth/email/check/”+email+“/”; //从Myhttphandler类调用MyServiceCall方法 字符串jsonstng=myhttp.MyServiceCall(Newurl); Log.e(标签,“来自URL的响应:”+jsonstng); if(jsonstng!

运行我的应用程序时出现JSON解析错误

下面提到了我面临错误的代码和json url

MyHttpHandler myhttp=newmyhttphandler();
字符串Newurl=url+“auth/email/check/”+email+“/”;
//从Myhttphandler类调用MyServiceCall方法
字符串jsonstng=myhttp.MyServiceCall(Newurl);
Log.e(标签,“来自URL的响应:”+jsonstng);
if(jsonstng!=null){
试一试{
JSONObject JSONObject=新的JSONObject(jsonstng);
//获取JSON数组节点
JSONArray JSONArray=jsonObject.getJSONArray(“响应”);
//循环遍历json中的所有数据
for(int i=0;ivalue
mydata.put(“响应”,myid);
添加(mydata);
}
}捕获(最终JSONException e){
Log.e(标记“Json解析错误:”+e.getMessage());
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
Toast.makeText(StartMainActivity.this,“JSON解析错误”,Toast.LENGTH_SHORT.show();
}
});
}
}否则{
e(标记“无法从服务器获取json”);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
Toast.makeText(StartMainActivity.this,“无法从服务器获取json。请检查LogCat是否存在可能的错误!”,Toast.LENGTH_SHORT.show();
}
});
}
来自URL的响应:
{“响应”:“成功”}

Json分析错误:
在java.lang.String类型的响应中值success无法转换为JSONArray

'success'
不是json数组。 json数组的一个示例如下

"cars":[ "Ford", "BMW", "Fiat" ]
这就是为什么它不能被解析

上面的示例“cars”数组具有字符串值。所以字符串对象

在您的示例中,在jsonArray之后有一个用于jsonArray的for循环

for(int i=0;i 这里您说您期望JSONObject 因此,您正在等待的格式是

   {"response":[ {"response":"success"},{"response":"success"},{"response":"success"} ]}
我相信这不是你最终想要的:p

还可以在循环中创建一个新的HashMap()。(请阅读HashMap,因为您的实现不支持相同的键用法,例如,不能使用具有相同键“response”的两个字符串对象的HashMap) 不要只检查空检查,还要检查字符串是否为空

首先,定义服务响应的正确格式,然后定义捕获数据和搜索web的正确实现,以便使用类似jackson的库将响应解析为对象

问候

Ps如果你想处理这个响应, 然后

也许足够了

{"response":"success"} is a JSONObject but you are treating it as JSONArray.
JSON数组总是用
[]

示例:
[“a”、“b”、“c”]
或类似于JSONObject数组的内容。例如:
[{“key”:“value”},{“key”,“value”}]
。许多组合都是可能的,但最重要的是,它应该从
[]

开始,不要试图将字符串解析为JSONArray。两者之间没有层次结构连接,没有is-A关系,因此您无法解析它。您尝试解析的json不遵循您定义的模式,您希望格式为{“”:[]},但json的格式为{“”:“}。您正在查找的内容可以完成,但您需要决定在值是字符串而不是数组的情况下要执行的操作,是否要null,一个空数组或一个包含值的数组?实际上,这是我的登录表单信息,当服务器上存储并通过jason的电子邮件和密码与输入电子邮件和密码匹配时,然后显示成功。这是我用android学习json的最佳方式。因为我不是专家,也不太了解这一点。有你有很多选择。开始阅读以学习JSON。然后检查JSON到java对象。
String jsonstng = "{\"response\":\"success\"}";//your service response
    String responseValue = "fail";
    if (jsonstng != null) {
        try {
            JSONObject jsonObject = new JSONObject(jsonstng);
            if (jsonObject.length() > 0 && jsonObject.has("response")) {
                responseValue = jsonObject.getString("response");
            }
        } catch (final JSONException e) {
            //log and handle error
        }
    }
    System.out.println(responseValue);
{"response":"success"} is a JSONObject but you are treating it as JSONArray.