这个php接受的json格式是啥
Posted
技术标签:
【中文标题】这个php接受的json格式是啥【英文标题】:What is the json format accepted bu this php这个php接受的json格式是什么 【发布时间】:2014-05-26 09:28:23 【问题描述】:我正在尝试发送帖子数据但收到错误,无法创建 json 对象。 请帮忙。
我从 java 发送这个:o 我收到错误我需要请让我知道他们是否在 php 中有任何更正。我不懂php
JSON:
"tagtrack_scans":
"product_id": "1",
"scanned_as": "12334556",
"email": "aabce@gmail.com"
PHP 代码:
<?php
$json_data=$_POST['tagtrack_scans'];
$data=json_decode($json_data, true);
echo $data['email'];
echo $data['scanned_as'];
echo $data['product_id'];
$dbhost = 'localhost:2082';
$dbuser = 'user';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db( 'tagtrack_scans' );
if(! $conn )
die('Could not connect: ' . mysql_error());
echo 'Connected to tagtrack_scans';
$sql="INSERT INTO tagtrack_scans (email, scanned_as, product_id)
VALUES ($email, $canned_As, $product_id)";
if (!mysqli_query($con,$sql))
die('Error: ' . mysqli_error($con));
echo "1 record added";
mysql_close($conn);
?>
用于将 JSON 发送到 PHP 的 Java 代码:
JSONObject jsonObjSend = new JSONObject();
JSONObject jsonObj = new JSONObject();
try
// Add key/value pairs
jsonObjSend.put("email", "ane@gmail.com");
jsonObjSend.put("canned_As", "12334556");
jsonObjSend.put("product_id", "1");
jsonObj.put("tagtrack_scans", jsonObjSend);
// Add a nested JSONObject (e.g. for header information)
// JSONObject header = new JSONObject();
// header.put("deviceType","android"); // Device type
// header.put("deviceVersion","2.0"); // Device OS version
// header.put("language", "es-es"); // Language of the Android client
// jsonObjSend.put("header", "");
// Output the JSON object we're sending to Logcat:
Log.i("MainActivity", jsonObj.toString(2));
catch (JSONException e)
e.printStackTrace();
JSONObject jsonObjRecv = HttpClient.SendHttpPost("http://abc.php", jsonObj);
【问题讨论】:
您确定从 Java 发送正确吗?您是否有一段用于将此 JSON 发送到服务器的代码? @nstCactus 我添加了java代码请检查 你能把这个var_dump($_POST);
作为你PHP脚本中的第一条指令添加(就在<?php
开始标签之后)并发布输出吗?
【参考方案1】:
根据this answer,您没有以正确的方式获取 JSON 数据。
试试这个:
<?php
$json_data=file_get_contents("php://input");
$data=json_decode($json_data, true);
if(isset($data['tagtrack_scans']))
$data = $data['tagtrack_scans'];
else
die('Unexpected JSON received');
echo $data['email'];
echo $data['scanned_as'];
echo $data['product_id'];
$dbhost = 'localhost:2082';
$dbuser = 'user';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db( 'tagtrack_scans' );
if(! $conn )
die('Could not connect: ' . mysql_error());
echo 'Connected to tagtrack_scans';
$sql="INSERT INTO tagtrack_scans (email, scanned_as, product_id)
VALUES ($email, $canned_As, $product_id)";
if (!mysqli_query($con,$sql))
die('Error: ' . mysqli_error($con));
echo "1 record added";
mysql_close($conn);
?>
请记住,这是快速的肮脏和未经测试的。您应该在将其用于生产之前对其进行改进。
【讨论】:
以上是关于这个php接受的json格式是啥的主要内容,如果未能解决你的问题,请参考以下文章