通过移动应用在PHP上检索json数据

时间:2019-05-06 07:42:38

标签: php json serialization

我很难从移动应用发送的发布请求中获取JSON数据字段。

在客户端(移动应用)上,JSON数据可以使用模型类轻松编码。

Future<http.Response> postRequest(CustomerData data) async {

  var url = 'http://xxxxxxxxxxxx/testSendData.php';
  var body = data.toJson();
  var response = await http.post(url, headers: {"Content-Type": "application/json"}, body: body);
  print("RESPONSE STATUS : ${response.statusCode}");
  print("RESPONSE BODY : ${response.body}");
  return response;
}

这部分效果很好,并生成了JSON,例如:

{  
   "creation":"12/01/2019",
   "status":"paid",
   "price":0.0,
   "items":[  
      {  
         "name":"Math books",
         "amount":"2"
      },
      {  
         "name":"Skates adult",
         "amount":"1"
      },
      {  
         "name":"Tools",
         "amount":"8"
      }
   ]
}

PHP服务器端(testSendData.php)运行不正常,我唯一设法获得的就是JSON数据本身,但无法获得其他字段:

$jsonData = file_get_contents("php://input");

我尝试使用json_decode来单独获取字段而没有成功,我还尝试创建一个php CustomerData class来解码JSON,但仍然无法正常工作。

获取JSON各个字段的目的是将其中一些存储在数据库中

任何帮助或参考教程,将不胜感激。

1 个答案:

答案 0 :(得分:1)

我假设您将json数据放入此变量$ jsonData

      <?php

        echo "jsondata=>".$jsonData='{  
         "creation":"12/01/2019",
         "status":"paid",
         "price":0.0,
         "items":[  
            {  
               "name":"Math books",
               "amount":"2"
            },
            {  
               "name":"Skates adult",
               "amount":"1"
            },
            {  
               "name":"Tools",
               "amount":"8"
            }
         ]
      }';

      $data1 = json_decode($jsonData, TRUE);
          echo "<pre>";
          print_r($data1);
          foreach ($data1 as $key => $value1) {

                if($key=='creation'){ 
                    echo $value1."<br>";
                }
                if($key=='status'){ 
                    echo $value1."<br>";
                }
                if($key=='price'){ 
                    echo $value1."<br>";
                }
                if($key=='items'){ 
                    foreach ($value1 as $key1 => $value_deta) {
                            print_r($value_deta);

                    }
                }

          }