将json数据解码为数组并在PHP中访问数组(Laravel)

时间:2017-10-05 06:37:37

标签: php arrays json laravel-5

我正在尝试以json格式提交表单输入。将json数据解码为数组后,我无法访问数组。

{
    "info": {
        "q_title": "hello",
        "q_description": "ddd",
        "q_visibility": "1",
        "start_date": "Thu, 05 Oct 2017 06:11:00 GMT"
    }
}

这是我的json数据。我的Laravel控制器如下:

public function store_quiz(Request $request)
    {
        $data = json_decode($request->getContent(), true);

        $input = $arrayName = array(
            'title' => $data["info"]["q_title"], 
        );

        CreateQuiz::create($input);

        $redirect = '/';
        return $redirect;
    }

不幸的是$data["info"]["q_title"]返回NULL。如何访问" q_tittle"我的json ??

4 个答案:

答案 0 :(得分:1)

也许$request->getContent()内容与您的示例不同,因为对我而言,它有效。

尝试检查$request->getContent()中的内容。

示例:

<?php
$source = '{
    "info": {
        "q_title": "hello",
        "q_description": "ddd",
        "q_visibility": "1",
        "start_date": "Thu, 05 Oct 2017 06:11:00 GMT"
    }
}';
$data = json_decode($source, true);
echo $data['info']['q_title'];

答案 1 :(得分:0)

只需在json_decode之后访问您的数据,而无需第二个参数。

$data->info->q_title

并使用第二个参数为true,它将您的对象转换为数组。

$data = json_decode($request->getContents(),true) //then use
$data['info']['q_title']

如果您在$request->getContents()中没有收到任何内容,则问题出在您发送的请求中。

另外,请检查这两个链接,了解如何检索JSON有效负载

Laravel 5: Retrieve JSON array from $request

Posting JSON To Laravel

答案 2 :(得分:0)

<强>解决方案:

我的数据保存在jQuery中的var data

发布我用过的数据

$.ajax({  .... data: {data: data} .... });

而不是

 $.ajax({  .... data: data .... }); 

所以我从$request->getContent()得到了意想不到的价值。

答案 3 :(得分:0)

这是一种更为Laravel风格的方法:

public function store_quiz(Request $request)
{
    $input = $arrayName = array(
        'title' => $request->input('info.q_title'), 
    );

    CreateQuiz::create($input);

    $redirect = '/';
    return $redirect;
}

确保您的javascript应用将Content-Type标头设置为application/json。 Laravel会为你json_decode()

来源:https://www.electron.build/code-signing(检索JSON输入值)