#php #json
#php #json
Вопрос:
У меня есть строка json, которую я в настоящее время проверяю следующим образом:
$playedOn = $query -> data -> artist -> services_played_on
Теперь я хочу получить первый элемент этого services_played_on, но не уверен, как это сделать.. Если бы это был массив, я бы просто выполнил $query[data][artist][services_played_on][0], но по разным причинам это испортило бы другой код, который у меня есть. У кого-нибудь есть идеи, как я могу это сделать, используя ->
обозначения?
——РЕДАКТИРОВАТЬ——
Спасибо за ваши ответы, но то, что мне было нужно, это:
$playedOn = $query -> data -> artist -> services_played_on[0]
(Я пока не могу отправить это в качестве ответа, поскольку я «новый» пользователь)
Комментарии:
1. В чем дело с just
$tmp = json_decode($query, true); $tmp['data']['artist']['services_played_on'][0]; unset($tmp);
?!2. Как выглядит JSON, вы уверены
services_played_on
, что это еще не массив?3. Я должен согласиться с другими. Почему вы не хотите декодировать массив json? Это не имеет особого смысла и потребует гораздо более сложной операции.
Ответ №1:
Просто сначала расшифруйте JSON.
$jset = json_decode($json, true);
echo $jset["data"]["artist"]["services_played_on"][0];
Комментарии:
1. @tiswas: Смотрите мой комментарий выше. Нет веской причины не декодировать его первым. В противном случае вам придется взаимодействовать со строковым представлением, что делает все несравненно более сложным.
Ответ №2:
Я не вижу вашей проблемы. Если это JSON, просто десериализуйте его в PHP, как сказал @Marcel.
Если вы хотите, чтобы результатом был JSON, просто сериализуйте его обратно.
Пример:
$json = '[ {"a":1} , {"d":3} , {"b":2} ]';
$data = json_decode( $json );
$new = json_encode( $data[1] ); // $new is now '{"d":3}'
Поскольку ваш вопрос довольно неоднозначен, я не уверен, хотите ли вы, чтобы результат был закодирован в формате JSON, ИЛИ вы хотите разделить строку по-своему.