免责声明:我使用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);
有什么建议吗?
答案 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
保留get
和post
的所有传入参数。
如果您不知道变量的名称是什么,并且想要快速和松散地播放,您可以循环遍历$_REQUEST
中的键,尝试解码每个键并使用成功解码的键(如果有的话)。 [注意:我不鼓励这个]