PHP:如何从iPad应用程序接收JSON数组

时间:2011-10-20 15:19:27

标签: php json ipad

免责声明:我使用json相当新。

我正在尝试使用php从iPAd应用程序接收json数据。我知道如何将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 个答案:

答案 0 :(得分:2)

你已经有了基本的想法。

您应该测试该值是否已设置,并在尝试将其解析为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脚本在标识为post的变量中使用data方法传递JSON字符串。

您可以使用$_REQUEST变量更一般地检查发送方法的灵活性,或者如果您知道它来自get方法,则可以检查$_GET$_REQUEST保留getpost的所有传入参数。

如果您不知道变量的名称是什么,并且想要快速和松散地播放,您可以循环遍历$_REQUEST中的键,尝试解码每个键并使用成功解码的键(如果有的话)。 [注意:我不鼓励这个]