org.json.JSONArray无法读取我的JSON对象

时间:2012-02-10 11:01:57

标签: php android json arrays

我正在为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);

3 个答案:

答案 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