Что делать с JSON Object Response? - PullRequest
2 голосов
/ 03 июля 2011

Я работал с Google Oauth 2 и, наконец, смог получить токен доступа. Google просто вернул токен доступа в объект JSON. Вывод был распечатан в моем браузере. Поскольку я никогда раньше не касался JSON или любого другого API, я понятия не имею, как захватить этот объект JSON, чтобы я мог сохранить токен доступа.

Пример вывода (скрыл фактические данные)

{
"access_token":"1/6GKFqrOr6000000004k10qgr000000GiUiRNbLnc",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token": "1/Vx34LfPISDuX000000Kq_SJWIgf42FVs"
}

Я попробовал простой $ token = $ _POST ['access_token']; который не работал. json_decode также не работает. Я уверен, что я не делаю это прямо здесь. Может кто-нибудь сказать мне, как вы можете взаимодействовать с объектом JSON?

EDIT:

Полагаю, мой начальный вопрос более элементарный, потому что я действительно новичок в программировании API. Я хочу знать, как инкапсулировать ответ браузера JSON-объекта в переменную, чтобы мой PHP-скрипт мог динамически декодировать ответ. В настоящее время браузер только что ответил на содержимое объекта JSON, как я разместил выше, но я не знаю имени объекта или имени переменной, например, $ object = {}. Есть ли способ узнать имя объекта или способ динамически поместить ответ в объект или массив?

Ответы [ 3 ]

2 голосов
/ 03 июля 2011
{
"access_token":"1/6GKFqrOr6000000004k10qgr000000GiUiRNbLnc",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token": "1/Vx34LfPISDuX000000Kq_SJWIgf42FVs"
}

Поместите этот полный ответ в объект Json: Тогда JSONObject jObject = new JSONObject (response);

Теперь получите ваш токен доступа: String value = jObject.getString ("access_token"); http://developer.android.com/reference/org/json/JSONObject.html

http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

1 голос
/ 03 июля 2011

Я только что запустил это, и это сработало как шарм:

 $f = <<<HER
 {
 "access_token":"1/6GKFqrOr6000000004k10qgr000000GiUiRNbLnc",
 "token_type":"Bearer",
 "expires_in":3600,
 "refresh_token": "1/Vx34LfPISDuX000000Kq_SJWIgf42FVs"
 }
 HER;
 $c = json_decode($f);
 echo $c->access_token;

Вы пытались получить доступ к свойству, как к массиву?В этом случае $c['access_token'] потерпит неудачу - $ c - это не массив, это объект.Вот почему я просто использовал $c->access_token; для вывода результата.Если вы хотите, вы можете передать TRUE в качестве второго параметра json_decode, но, по правде говоря, я не знаю, действительно ли это необходимо.

1 голос
/ 03 июля 2011

Вы пробовали с json_decode ($ output, true).Если вы дадите второй параметр, он вернет ассоциативный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...