我很难从移动应用发送的发布请求中获取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各个字段的目的是将其中一些存储在数据库中
任何帮助或参考教程,将不胜感激。
答案 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);
}
}
}