Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
想要在php中发送和接收json数据吗_Php_Json - Fatal编程技术网

想要在php中发送和接收json数据吗

想要在php中发送和接收json数据吗,php,json,Php,Json,根据应用需求,我正在尝试开发两个可以通过Json相互通信的PHP。我尝试在线搜索,但没有找到解决方案 有谁能给我建议一条正确的道路吗 我在mysql数据库中有数据,转换后的数据将采用json格式,如下所示:(同时寻找通过PHP-json对象和数组获取此数据格式的代码。) 发送Json数据的Php代码:(send.Php) 我的接收Json数据的Php代码:(rec.Php) 如果数据已经是json格式,您不应该使用json\u encode,请将代码更改为类似以下内容: $data = ar

根据应用需求,我正在尝试开发两个可以通过Json相互通信的PHP。我尝试在线搜索,但没有找到解决方案

有谁能给我建议一条正确的道路吗

我在mysql数据库中有数据,转换后的数据将采用json格式,如下所示:(同时寻找通过PHP-json对象和数组获取此数据格式的代码。)

发送Json数据的Php代码:(send.Php)


我的接收Json数据的Php代码:(rec.Php)


如果数据已经是
json
格式,您不应该使用
json\u encode
,请将代码更改为类似以下内容:

$data = array('user' => array(
         array('firstName' => 'Vignesh', 'lastName' => 'Prajapati'),
         array('firstName' => 'Vaibhav', 'lastName' => 'Prajapati')
       ));
当然,您还需要将其他字段添加到数组中

对上述数据使用
json\u encode()
将返回:

{
   "user" : [
     {
      "firstName" : "Vignesh",
      "lastName" : "Prajapati"
     },
     {
      "firstName" : "Vaibhav",
      "lastName" : "Prajapati"
     }
   ]
 }

修改函数以在post请求中发送JSON_数据的标头

function sendPostData($url, $post){
 $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($post))                                                                       
   );  
  $result = curl_exec($ch);
  curl_close($ch);  // Seems like good practice
  return $result;
}
文件使用中

<?php

$json_input_data=json_decode(file_get_contents('php://input'),TRUE);

print_r( $json_input_data);


?>


正如大家所说,不需要
$str\u data=json\u encode($data),因为数据已经在json中。

记住json的意思是“对象表示法”,即它是用javascript描述对象的一种方法。这是一种很好的网络级通信方式,但是当您使用PHP时,应该使用PHP设计使用的数据结构。与其直接在任何一方使用JSON,尤其是作为大JSON字符串的替代品,不如将该数据保持为数组的结构,并在发送之前对其进行编码。您使用curl的方法很好,不过有点定制-有很多不错的路由器可以更好地管理这些请求(symfony是我最喜欢的),但这是另一个问题

e、 g.将其表示为,而不是大字符串:

$data = 
    [ "user" => [   
                 [ "firstName" => "Vignesh",  
                   "lastName"  => "Prajapati",
                   "age"       => 23,
                   "email"     => ["vignesh@gmail.com","vignesh@yahoo.com"],
                   "subject"   => ["English","Gujarati", "Hindi"]
                 ]
等等。。
当需要将其发送到另一台服务器时,
json\u encode
并开始运行。

如果您已经有json格式的数据,那么您不应该使用
json\u encode()
对其进行编码。嗨,@KristerAndersson,我刚刚手动编写了json格式的数据。事实上,首先我想要这种格式的数据,然后我想发送。@KristerAndersson,如果我的方式不对,那么请建议方向。构建一个
user
对象,用一个包含单个用户信息的对象数组填充它。结果为en
json\u encode()
。谢谢@madtrry,但是如果我的数据是$data=array('user'=>array(array('firstName'=>'Vignesh','lastName'=>'Prajapati')、array('firstName'=>'Vaibhav','lastName'=>'Prajapati'));它不起作用你应该使用JSON,我用过它,它起作用了。但我仍然无法打印json元素。它给出了错误提示:数组到字符串的转换。在rec.php file.print\r($json\u input\u data)上;如果您正在测试变量值,则应使用。是否有任何函数可以按顺序打印数组的所有这些值。(最后的帮助?)嘿@Krister Andersson,谢谢你的部分代码,它对我有用。感谢您提供这些理解。!!这就是为什么我更喜欢PHP5.4的原因。当你把一棵4+高的树作为一个数组来构建时,方括号语法的可读性要大得多。你好,来自Qaribu的Josh,谢谢你的消息,它帮助了我的理解。!!
function sendPostData($url, $post){
 $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($post))                                                                       
   );  
  $result = curl_exec($ch);
  curl_close($ch);  // Seems like good practice
  return $result;
}
<?php

$json_input_data=json_decode(file_get_contents('php://input'),TRUE);

print_r( $json_input_data);


?>
$data = 
    [ "user" => [   
                 [ "firstName" => "Vignesh",  
                   "lastName"  => "Prajapati",
                   "age"       => 23,
                   "email"     => ["vignesh@gmail.com","vignesh@yahoo.com"],
                   "subject"   => ["English","Gujarati", "Hindi"]
                 ]