darkleviathan
@darkleviathan

Как разобрать многомерный json php?

Пытаюсь разобрать такой json:

{
  "ok": true,
  "result": [
    {
      "message": {
        "date": 1270110569,
        "text": "hello",
        "from": {
          "first_name": "Test",
          "last_name": "FGHTZX",
          "is_bot": false,
          "id": 234512896,
          "language_code": "ru"
        },
        "message_id": 16,
        "chat": {
          "first_name": "Test",
          "last_name": "FGHTZX",
          "type": "private",
          "id": 234512896
        }
      },
      "update_id": 474148724
    }
  ]
}


Хочу получить значения text и id
С более простыми проблем нет, но конкретно с этим не могу хотя бы получить значений напрямую, пишет array
Пробовал так:

$string = file_get_contents($json_file);

$result_parse = json_decode($string, TRUE);

$r=$result_parse->result->message->text;

print "$r";


Пробовал так же

$r=$result_parse['result'];

print "$r";


вывело Array, хотя если обратился к $result_parse['ok'] вывело 1, что соответствует true
  • Вопрос задан
  • 1167 просмотров
Решения вопроса 2
xEpozZ
@xEpozZ
Веб-разработчик
"result": [ обозначает, что сейчас пойдет массив. т.е. result в этом случае является массивом
"message": { обозначает, что сейчас пойдет объект. т.е. message в этом случае является объектом.

В вашем случае

$string = file_get_contents($json_file);

$result_parse = json_decode($string, TRUE);

$r=$result_parse->result[0]->message->text;

print "$r";
Ответ написан
mahmudchon
@mahmudchon
<?php
$string = '
{
  "ok": true,
  "result": [
    {
      "message": {
        "date": 1270110569,
        "text": "hello",
        "from": {
          "first_name": "Test",
          "last_name": "FGHTZX",
          "is_bot": false,
          "id": 234512896,
          "language_code": "ru"
        },
        "message_id": 16,
        "chat": {
          "first_name": "Test",
          "last_name": "FGHTZX",
          "type": "private",
          "id": 234512896
        }
      },
      "update_id": 474148724
    }
  ]
}
';
$result_parse = json_decode($string, TRUE);

$text = $result_parse['result'][0]['message']['text'];
$id   = $result_parse['result'][0]['message']['message_id'];

echo 'Text: ', $text, ', id:', $id;
//Text: hello, id:16
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы