PHP: Как получить массив JSON из приложения для iPad

#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. Это имеет смысл. Еще раз спасибо за быстрый ответ.