2012-02-10 3 views
0

Im пишет приложение клиент/сервер для Android, которое отправляет имя пользователя и пароль на сервер и получает статус для этой учетной записи пользователя.org.json.JSONArray не может прочитать мой объект JSON

Мой PHP код выглядит так:

$return['login'] = 'success'; 
echo json_encode($return); 

и текст, получаемый андроида является:

{"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) 

Так что я думаю, что я пропустил что-то, что php должен отправить, но после прочтения на json.org я просто не вижу, что это такое. Я попытался добавить скобки до и после, а также обернув его в другой массив, как это:

$parameters['login'] = 'success'; 
    $return['parameters'] = $parameters; 
echo json_encode($return); 
+0

вероятно потому, что это не массив JSON ... – njzk2

+0

Исключение кажется очевидным, но я думаю, что это недоразумение, потому что PHP * Массивы * только заказать карты. –

ответ

2

Вы должны использовать JSONObject вместо JSONArray, так как вы послав пару ключ-значение.

+0

Это объясняет, что в голове у меня сложилось впечатление, что несколько пар ключ-значение будут массивом. – Thomas

1

Сво JSONObject не JSONArray так должен быть,

JSONObject json_obj = new JSONObject(your_string); 

Тогда вы можете просто использовать json_obj, чтобы получить значение,

String login = json_obj.getString("login"); 
Log.d("login status", login); 
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