volley get response返回类型为java.lang.String的值,无法将该值转换为JSONArray
我正在尝试使用api进行身份验证。如果我在响应时出错,我的api将返回以下响应并出现以下错误 无法将java.lang.String类型的值转换为JSONArray 请帮忙,我是个新手 这是我的api返回的结果:volley get response返回类型为java.lang.String的值,无法将该值转换为JSONArray,java,android,arrays,api,android-volley,Java,Android,Arrays,Api,Android Volley,我正在尝试使用api进行身份验证。如果我在响应时出错,我的api将返回以下响应并出现以下错误 无法将java.lang.String类型的值转换为JSONArray 请帮忙,我是个新手 这是我的api返回的结果: [{“status”:“True”,“username”:“parent”,“schoolid”:“001”,“category”:“3”,“usercode”:“0720994718”}] 这是我的密码 RequestQueue queue=Volley.newRequestQu
[{“status”:“True”,“username”:“parent”,“schoolid”:“001”,“category”:“3”,“usercode”:“0720994718”}]
这是我的密码
RequestQueue queue=Volley.newRequestQueue(LoginActivity.this);
//创建一个StringRequest
StringRequest=新的StringRequest(request.Method.GET,
网址,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONArray jArray=新JSONArray(响应);
int i=0;
而(i
I was changeJSONArray jArray=newjsonarray(响应)
toJSONObject jObject=新的JSONObject(响应)
和JSONObject json_data=jArray.getJSONObject(i)
toString json_data=jObject(i)代码>。请试一试
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
//create a StringRequest
StringRequest request = new StringRequest( Request.Method.GET,
URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jObject = new JSONObject(response);
int i = 0;
while (i < jArray.length()) {
String json_data = jObject(i);
String status = json_data.getString("status");
if (status == "True") {
Intent intent = new Intent(LoginActivity.this, ParentActivity.class);
startActivity(intent);
Toast.makeText(LoginActivity.this, "logged in as " + user,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(LoginActivity.this, "wrong username or password",
Toast.LENGTH_LONG).show();
}
i++;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this, "Error!!! " + error.toString(),
Toast.LENGTH_LONG).show();
}
}
) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("username", user);
params.put("password", pass);
return params;
}
};
//add the StringRequest to the RequestQueue
queue.add(request);
}
RequestQueue queue=Volley.newRequestQueue(LoginActivity.this);
//创建一个StringRequest
StringRequest=新的StringRequest(request.Method.GET,
网址,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jObject=新JSONObject(响应);
int i=0;
而(i
您的API是否返回
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[{"status":"True","username":"parent","schoolid":"001","category":"3","usercode":"0720994718"}]
</string>
?
如果是第一个,那么您应该在调用“JSONArray jArray=new JSONArray(response);”之前从XML答案中提取JSON字符串,然后执行类似于“JSONArray jArray=new JSONArray(JSON_响应的一部分);”.我认为您的JSON数组在XML中,因此您必须首先使用dom解析器解析XML这是否回答了您的问题?同样没有帮助,这是我的api返回的[{“status”:“True”,“username”:“parent”,“schoolid”:“001”,“category”:“3”,“usercode”:“0720994718”}]
[{"status":"True","username":"parent","schoolid":"001","category":"3","usercode":"0720994718"}]