2014-11-27 2 views
-3

Пожалуйста, как я могу разобрать этот JSON ответ:

{ "info": { "apiVersion": "1.1", "clientFeatures": ["all"], "clientTime": "2014-11-27T23:04:27.542Z", "emotions": [], "input": "who+created+you", "isNewUser": true, "locale": "en", "location": "53.0%2C9.0", "login": "mashape", "responseTime": 948 }, "output": [{ "actions": { "custom": {}, "say": {"text": "I was created by the cool guys from Pannous."} }, "entities": { "dialoguesInfo": { "dialog": "Sandbox", "dialog_id": "63", "forced": false, "initiative": false, "match_id": "205233", "matchscore": "3.77", "response_id": "205224" }, "input": "who+created+you", "locale": "en" }, "responseTime": 673, "results": {} }] } 

Я хочу, чтобы получить результат в: output-> Действия-> говорят.

Я уже пробовал: $req = $response -> raw_body; foreach($req as $ob->$val){} но не работает.

Я пробовал json_decode тоже, но не работал.

+2

'json_decode()' является ваш друг. –

+1

Затем научитесь правильно использовать его. Если он не работает, ваши данные будут обработаны. –

+2

Не грубите, обновите свой вопрос с помощью результатов 'json_decode()'. Также проверьте его содержимое, передавая 'true' как второй аргумент, который преобразует его в массив вместо экземпляров' stdClass'. –

ответ

1

Как Томаш Ковальчик уже предложил это сделать, json_decode - отличная нативная функция.

Иногда это может быть неприятно, когда код не работает так, как вы ожидаете, но люди действительно пытаются помочь. Когда что-то не работает так, как вы хотите, обязательно включите , как это не сработало для вас.

$x = '{ "info": { "apiVersion": "1.1", "clientFeatures": ["all"], "clientTime": "2014-11-27T23:04:27.542Z", "emotions": [], "input": "who+created+you", "isNewUser": true, "locale": "en", "location": "53.0%2C9.0", "login": "mashape", "responseTime": 948 }, "output": [{ "actions": { "custom": {}, "say": {"text": "I was created by the cool guys from Pannous."} }, "entities": { "dialoguesInfo": { "dialog": "Sandbox", "dialog_id": "63", "forced": false, "initiative": false, "match_id": "205233", "matchscore": "3.77", "response_id": "205224" }, "input": "who+created+you", "locale": "en" }, "responseTime": 673, "results": {} }] }';

Чем json_decode и var_dump, чтобы увидеть результат.

var_dump(json_decode($x));

Результат:

class stdClass#1 (2) { public $info => class stdClass#2 (10) { public $apiVersion => string(3) "1.1" public $clientFeatures => array(1) { [0] => string(3) "all" } public $clientTime => string(24) "2014-11-27T23:04:27.542Z" public $emotions => array(0) { } public $input => string(15) "who+created+you" public $isNewUser => bool(true) public $locale => string(2) "en" public $location => string(10) "53.0%2C9.0" public $login => string(7) "mashape" public $responseTime => int(948) } public $output => array(1) { [0] => class stdClass#3 (4) { public $actions => class stdClass#4 (2) { ... } public $entities => class stdClass#7 (3) { ... } public $responseTime => int(673) public $results => class stdClass#9 (0) { ... } } } }

Как вы можете видеть, json_decode работает отлично. Для полного выполнения данных вместо var_dump выполните то же, что указано выше, но используйте print_r.

Помните, что если вы хотите декодированные данные в виде массива, используйте json_decode($yourData, true)

Отсюда, теперь должно быть ясно, как получить доступ, данные, которые вы хотите. Если нет, не беспокойтесь, решение близко, просто напишите комментарий о том, какие части вас путают.

SPOILER

Я добавил небольшой фрагмент для вас здесь https://eval.in/227351 Основном 0 смещение, что дает вам трудное время ...

$foo = json_decode($x, TRUE); var_dump($foo['output'][0]['actions']);

+0

bro, я спешил и задал вопрос неправильно, я хочу, чтобы это отразилось на результатах опроса, там много stdClass не может туда попасть. –

+0

@JefferyGintoki проблем нет для меня.Я знаю, что вас беспокоит, это индекс 0. Я добавлю спойлер в ответ. Момент ... добавил. Скажите, если вы думаете, что это имеет смысл. Кроме того, отредактируйте вопрос, если вы его нашли неправильно, потому что вы торопитесь, что может обратить вспять некоторые из downvotes в upvotes. –

+0

спасибо, что вы единственный, кто хорошо понимает, thx bro :) –

Смежные вопросы