使用ZEND框架和/或PHP接收JSON有效负载

jw5wzhpr  于 2023-03-20  发布在  PHP
关注(0)|答案(4)|浏览(110)

我从我的站点内部网页/asset/setjob上的一个Web服务接收到一个JSON有效负载。以下是发布到/asset/setjob的JSON有效负载:
[{“作业”:{“源文件名”:“啤酒-饮用-Pig. mpg”,“当前_步骤”:“等待文件”,“编码配置文件ID”:“无”、“决议”:“无”,“状态网址”:“http://example.com/api/v1/jobs/1.json“,“标识”:1、“比特率”:“无”、“当前状态”:“正在等待文件”,“当前进度”:“无”,“远程标识”:“我自己的远程ID”}}]
这个有效负载在这个页面上发布一次。这个页面不是用来查看的,而是用来解析JSON对象的id和current_status,这样我就可以把它插入数据库了。我使用的是Zend框架。
我如何在Zend中接收这个有效载荷?我是$_GET ['json']还是$_POST ['job']?这些方法似乎都不起作用。我本质上需要将这个有效载荷赋给一个php变量,这样我就可以操纵它了。
我试过了
$jsonStrGet =变量转储($_GET);$jsonStrPost =变量转储($_POST);
我试过了:响应=这个-〉getResponse();$body = $响应-〉获取正文();
块引号
任何帮助都将不胜感激!谢谢。

falq053o

falq053o1#

可以通过以下方式获取有效负载数据(在action方法内部):

$body = $this->getRequest()->getRawBody();
$data = Zend_Json::decode($body);

$body将包含原始JSON字符串:[{“作业”:{“源文件名”:...}]和$data变量将包含在有效载荷中传递的解码JSON数据。

unhi4e5o

unhi4e5o2#

按照@Saeven在Zend Framework 2中所说的,您应该使用$request-〉getContent()和\Zend\Json\Json::decode。

<?php

namespace Rsvp\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;

class RsvpController extends AbstractActionController{

    public function getAccessTokenAction() {
        $request = $this->getRequest();

        $result = array('status' => 'error', 'message' => 'There was some error. Try again.', 'isXmlHTTP' => $request->isXmlHttpRequest());

        if($request->isXmlHttpRequest()){
             $data = \Zend\Json\Json::decode($request->getContent());

            if(!empty($data->token)){
                $result['status'] = 'success';
                $result['accessToken'] = '1234';
               $result['message'] = '';
            }
        }
    
        return new JsonModel($result);
    }
}
jexiocij

jexiocij3#

我不知道这里如何使用ZF,但是要访问请求参数,需要使用

$this->getParams() or $this->getParam('yourvar');

(See manual)
在你的控制器里
然后,使用Zend_Json::decode($var);

iaqfqrcu

iaqfqrcu4#

不知道你在问什么,但是要把JSON字符串转换成对象,使用Zend_Json::decode($foo)

相关问题