在symfony中将php数组转换为json格式

在symfony中将php数组转换为json格式,php,json,symfony,Php,Json,Symfony,我有这个Json(见下文),我正试图找到一种使用php数组生成这样一个Json的方法。我的问题是如何从php数组生成这样的json。另一方面,我仍然不知道如何构建php数组,以便将其转换为下面的json。我使用symfony2将其呈现为类似于此的json var presentation = [{ "image": "images/cover.jpg", "sentence": "This is a sentence

我有这个Json(见下文),我正试图找到一种使用php数组生成这样一个Json的方法。我的问题是如何从php数组生成这样的json。另一方面,我仍然不知道如何构建php数组,以便将其转换为下面的json。我使用symfony2将其呈现为类似于此的json

var presentation = [{
                    "image": "images/cover.jpg",
                    "sentence": "This is a sentence",
                    "audio": "hello.mp3",
                    "sentence_info": [
                        {"start": 0, "end": 0.5 },
                        { "start": 0.5, "end": 1.2 }
                    ]
                },

                {
                    "image": "images/cat.jpg",
                    "sentence": "This is another sentence",
                    "audio": "bey.mp3",
                    "sentence_info": [
                        { "start": 0, "end": 0.2 },
                        { "start": 0.2, "end": 0.8 },
                        { "start": 0.8, "end": 1.2 },
                        { "start": 1.2, "end": 1.5 },
                        { "start": 1.5, "end": 2 }
                    ]
                },

                {
                    "image": "images/dog.jpg",
                    "sentence": "This is a third sentence",
                    "audio": "good.mp3",
                    "sentence_info": [
                        { "start": 0, "end": 0.5 },
                        { "start": 0.5, "end": 1.2 }
                    ]
                }
];

您将在已构建的数组上使用。

这只是PHP中简单的数组赋值。像这样:

public function whatEver()
{
    $presentation = array(
        array(
            'image' => 'images/cover.jpg',
            'sentence' => 'This is a sentence',
            'audio' => 'hello.mp3',
            'sentence_info' => array(
                array('start' => 0, 'end' => 0.5),
                array('start' => 0.5, 'end' => 1.2),
            ),
        ),
        array(
            'image' => 'images/cat.jpg',
            'sentence' => 'This is another sentence',
            'audio' => 'bey.mp3',
            'sentence_info' => array(
                array('start' => 0, 'end' => 0.2),
                array('start' => 0.2, 'end' => 0.8),
                array('start' => 0.8, 'end' => 1.2),
                array('start' => 1.2, 'end' => 1.5),
                array('start' => 1.5, 'end' => 2),
            ),
        ),
        array(
            'image' => 'images/dog.jpg',
            'sentence' => 'This is a third sentence',
            'audio' => 'good.mp3',
            'sentence_info' => array(
                array('start' => 0, 'end' => 0.5),
                array('start' => 0.5, 'end' => 1.2),
            ),
        ),
    );

    $presentation =  json_encode($presentation, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

    $response = new Response($presentation);
    $response->headers->set('Content-Type', 'application/json');

    return $response;
}

只要简单看一下提供的json,您就会发现它是一个数组,里面有各种对象

您可以从任何地方(很可能是数据库?)循环数据,然后将其添加到数组中,如下所示:

$data = array();
foreach ($data_from_wherever as $item) {
    $i = array(
        'image' => '',
        'sentence' => '',
        'audio' => '',
        'sentence_info' => array(
            array(
                'start' => '',
                'finish' => ''
            ),
            array(
                'start' => '',
                'finish' => ''
            ),
        // ......etcetc
        ),
    );

    array_push($data, $i);
}
给你一个数组,你想得到你想要的输出

$presentation = json_encode($data);

如果您还不知道如何获取所述数据,您可以简单地创建如下所示的
$data
数组,然后对其进行编码

$data = array(
    array(
        'image' => 'images/cover.jpg',
        'sentence' => 'This is a sentence',
        'audio' => 'hello.mp3',
        'sentence_info' => array(
            array('start' => 0, 'end' => 0.5),
            array('start' => 0.5, 'end' => 1.2),
        ),
    ),
    array(
        'image' => 'images/cat.jpg',
        'sentence' => 'This is another sentence',
        'audio' => 'bey.mp3',
        'sentence_info' => array(
            array('start' => 0, 'end' => 0.2),
            array('start' => 0.2, 'end' => 0.8),
            array('start' => 0.8, 'end' => 1.2),
            array('start' => 1.2, 'end' => 1.5),
            array('start' => 1.5, 'end' => 2),
        ),
    ),
    array(
        'image' => 'images/dog.jpg',
        'sentence' => 'This is a third sentence',
        'audio' => 'good.mp3',
        'sentence_info' => array(
            array('start' => 0, 'end' => 0.5),
            array('start' => 0.5, 'end' => 1.2),
        ),
    ),
);

问题是,当我在php中使用json_encodeAssign$presentation时,我仍然不知道如何构建一个phparray,该phparray将为我提供该结果(json结果),它是一个字符串,内容是JavaScript变量中的所有内容,用单引号括起来。然后是var_dump(json_解码($presentation));非常感谢。我试试看this@user3792227让我知道进展如何!昨天我终于尝试了另一种方法,它正在发挥作用。但这次我面临的另一个问题是与框架symfony2相关的;当您想要返回JSON时:返回新的JsonResponse(数组('test'=>'test');或者返回新的JsonResponse($yourarray);谢谢,当我使用JsonRespone()时,我实际上得到了一个quit-gook结果,但我在数组中得到了一些奇怪的额外字符。这就是我在数组中得到的值:“image”:“\/ara\/web\/uploads\/images\/slide\/34.jpeg”。糟糕的是,当我试图将结果传递给javascript变量时,甚至会得到一个最糟糕的结果:“books”:[{“image”:“\/ara\/web\/uploads\/images\/slide\/32.jpeg”您的问题已暂停…在未重新打开此问题之前,我无法正确帮助您。因为我无法使用格式化代码发布评论。谢谢,但我已经解决了此问题