这个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脚本中的第一条指令添加(就在&lt;?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格式是啥的主要内容,如果未能解决你的问题,请参考以下文章

创建一个 aws 端点以接受 json 格式并将其存储到 DS

把JSON 格式的字符串转换为 PHP数组或对象

java中如何用json格式发送并接受arrayList?

json数据格式和xml数据格式的区别和用法是啥?

json数据格式和xml数据格式的区别和用法是啥?

python爬虫post请求中的data参数怎么接受json格式的list