#php #json #ipad
#php #json #iPad
Вопрос:
Отказ от ответственности: я довольно новичок в использовании json.
Я пытаюсь использовать php для получения данных json из приложения для iPad. Я знаю, как преобразовать json в массив в php, но как мне на самом деле получить его и сохранить в переменной, чтобы его можно было декодировать?
Вот пара примеров, которые я попробовал на основе поисковых запросов Google и stackoverflow.
$json_request = @file_get_contents('php://input');
$array = json_decode($json_request);
AND ALSO
$array = json_decode($_POST['data'], true);
Есть предложения?
Ответ №1:
У вас уже есть основная идея.
вы должны проверить, что значение установлено, а также удалить дополнительные косые черты из входящей строки, прежде чем пытаться проанализировать ее как JSON.
if(isset($_POST['data'])){
$array = json_decode(stripslashes($_POST['data']),true);
//$array now holds an associative array
}//Data Exists
Также было бы неплохо перед началом работы с массивом проверить, что вызов json_decode()
был успешным, убедившись, что $array
это не null
перед использованием.
Если вы не полностью доверяете целостности отправляемой информации, вам следует выполнить расширенную проверку на этом пути, а не доверять тому, что данный ключ существует.
if($array){ // Or (!is_null($array)) Or (is_array($array)) could be used
//Process individual information here
//Without trust
if(isset($array['Firstname'])){
$CustomerId = $array['Firstname'];
}//Firstname exists
}//$array is valid
Мне, в частности, нравится проверять информацию, когда я динамически создаю запросы для получения информации, которая может не потребоваться для успешной вставки в БД.
В приведенном выше примере $_POST['data']
указано, что все, что когда-либо вызывал PHP-скрипт, делало это, передавая строку JSON с использованием post
метода в переменной, идентифицированной как data
.
Вы могли бы проверить более обобщенно, чтобы обеспечить гибкость в методе отправки, используя $_REQUEST
переменную, или, если вы знаете, что она поступает с помощью get
метода, который вы можете проверить $_GET
. $_REQUEST
содержит все входящие параметры из обоих get
и post
.
Если вы не знаете, как называется входящая переменная, и хотите играть очень быстро и свободно, вы можете перебирать ключи, $_REQUEST
пытаясь декодировать каждый из них, и использовать тот, который успешно декодирован (если есть). [Примечание: я не поощряю это]
Комментарии:
1. Спасибо за быстрый ответ. Один быстрый вопрос, будет ли json всегда отображаться как «данные»? (Для получения любого json я использую $_POST[‘data’] ?) Или есть конкретное имя / переменная, о которой мне нужно знать?
2. это полностью определяется тем, как информация отправляется на сервер.
3. Это имеет смысл. Еще раз спасибо за быстрый ответ.