我正在为Android编写一个客户端/服务器应用程序,它将用户名和密码发送到服务器并接收该用户帐户的状态。
我的PHP代码是这样的:
$return['login'] = 'success';
echo json_encode($return);
并且android收到的文字是:
{"login":"success"}
但是当我尝试解码json字符串以读取参数时仍然出现错误:
JSONArray jsonArray = new JSONArray(input);
异常:
02-10 11:54:37.743: WARN/System.err(332):
org.json.JSONException:
Value {"login":"success"} of type org.json.JSONObject
cannot be converted to JSONArray
02-10 11:54:37.779: WARN/System.err(332):
at org.json.JSON.typeMismatch(JSON.java:107)
所以我想我错过了应该发送的东西,但是在json.org上阅读之后我就看不出它是什么了。我曾尝试在前后添加括号,并将其包装在另一个数组中:
$parameters['login'] = 'success';
$return['parameters'] = $parameters;
echo json_encode($return);
答案 0 :(得分:2)
由于您发送了一个键值对,因此您应该使用JSONObject
而不是JSONArray
。
答案 1 :(得分:1)
它是JSONObject
而不是JSONArray
所以它应该是,
JSONObject json_obj = new JSONObject(your_string);
然后您可以使用json_obj
来获取值
String login = json_obj.getString("login");
Log.d("login status", login);
答案 2 :(得分:0)
您的json不是JSONArray,它是JSONObject。
try {
JSONObject o = new JSONObject("{\"login\":\"success\"}");
System.out.println(o.getString("login"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出:
System.out I success