dongqia3502 2017-04-20 14:33 采纳率: 100%
浏览 2771
已采纳

如何在PHP中获取[object Object]的内容?

I我有一些数据,这些数据通过一些JSON发送并上传到数据库。 当我尝试将其写入数据库时,该字段为[object Object]。 JSON如下所示::

{
    "version":"1.0",
    "event":"video_recorded",
    "data":{
        "videoName":"vsrtc1492808825_223",
        "audioCodec":"NellyMoser ASAO",
        "videoCodec":"H.264",
        "type":"FLV",
        "orientation":"landscape",
        "id":"315414",
        "dateTime":"2017-04-21 14:07:12",
        "timeZone":"America/Los_Angeles",
        "payload":"{\\\"ip\\\":111.111.111.11, \\\"env\\\": test}",
        "httpReferer":"https://app.surveygizmo.com/projects/previewbottom?id=3489282&__sgtarget=3&sLanguage=English&__sg_build_test=1&__sg_collab_test=1&__sg_tester=SW5mb0BNb29uc0FuYWx5dGljcy5jb20%3D&__sg_tester_name=TW9vbnMgQW5hbHl0aWNz&__sg_tester_id=351560&link_id=0&__sg_skip_actions=1&__ignore_entry_logic=1&?preview_frame=true"
    }
}

在嵌入代码JavaScript中,我将此变量传递到flashvars中,以将其添加到json中:

var clientIP = '11.11.111.1111';
var payload_data = {"ip":clientIP, "env":"test"};
var flashvars = {qualityurl: "avq/300p.xml",accountHash:"randomstuff", eid:2, showMenu:"true", mrt:120,sis:0,asv:1,mv:0, payload: payload_data};

我尝试在解码整个JSON之后选择正确的密钥:

$data = $_POST['payload'];
$retrieved_data = json_decode($data, true);
$ip_address = $retrieved_data['data']['payload'];

当我将$ ip_address写入数据库时,它返回:

[object Object]

如果我尝试在我的PHP中更深入一点:

$ip_address = $retrieved_data['data']['payload']['ip'];

它将四个条目添加到我的数据库中:

[
]
{ 
}

记录器的文档https://addpipe.com/docs#sending-custom-data-using-payload-variable说在单引号之间传递自定义JSON:

payload: '{"ip":clientIP, "env":"test"}'

如果我尝试将整个有效负载写入数据库中:

$ip_address = $retrieved_data['data']['payload'];

它将以下内容写入该字段,而不显示clientIP变量的内容:

{\"ip\":clientIP,\"env\":\"test\"}

如果我尝试用这个方法更深入一层:

$ip_address = $retrieved_data['data']['payload']['ip'];

我得到了相同的4项

[
]
{
}

所以我被卡住了,我不知道还能尝试什么。 我正在尝试获取此处的信息:

"payload":"{\\\"ip\\\":111.111.111.11, \\\"env\\\": test}"

展开全部

  • 写回答

2条回答 默认 最新

  • doumalu9257 2017-04-21 13:44
    关注

    According to the documentation you've provided a link to:

    You have two formating options in order to send the JSON correctly:

    • enclose the JSON in quotes and write the JSON normally: payload:'{"a":"b"}'
    • enclose the JSON in double quotes and escape the double quotes from inside the JSON payload:"{\"a\":\"b\"}"

    This seems very clear:

    var clientIP = '11.11.111.1111';
    var payload_data = JSON.stringify({ip:clientIP, env:"test"});
    var flashvars = {qualityurl: "avq/300p.xml",accountHash:"randomstuff", eid:2, showMenu:"true", mrt:120,sis:0,asv:1,mv:0, payload: payload_data};
    

    However this is apparently not working. Until the issue is resolved on the remote server, you can try sending a delimited string and then parse it on the PHP side:

    var clientIP = '11.11.111.1111';
    var payload_data = clientIP + '|test';
    var flashvars = {qualityurl: "avq/300p.xml",accountHash:"randomstuff", eid:2, showMenu:"true", mrt:120,sis:0,asv:1,mv:0, payload: payload_data};
    

    Then in the PHP

    $data = $_POST['payload'];
    $retrieved_data = json_decode($data, true);
    list($ip_address, $env) = explode("|", $retrieved_data['data']['payload']);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部