我试图在我的视图中输出我从Controller获得的内容作为json,但我认为我输出很奇怪。
在网络上我搜索json,它出现如下输出:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
然而,我的格式化并且看起来像这样。
[{"Customer":{"id":"1","first_name":"Ian","last_name":"Smith","address_1":"10 High Streets","address_2":"","town_city":"Plymouth","county":"Devon","postcode":"PL1 2JD"}},{"Customer":{"id":"2","first_name":"David","last_name":"Smith","address_1":"52 Low Avenue","address_2":"","town_city":"Exeter","county":"Devon","postcode":"EX2 1KO"}}]
我如何输出它看起来像第一个?
修改
控制器
$user = $this->Customer->find( 'all' );
$this->set( 'users', $user );
查看
<?php echo json_encode($user); ?>
答案 0 :(得分:3)
在输出步骤上美化你的json是没有意义的。如果重要的话,你可以使用外部工具来看看json。
另外,考虑在Cake中使用(JSON View)。 简而言之,您可以使用要进行jsonify的内容设置一个特殊的视图变量:
Router::parseExtensions()
$this->set('_serialize', array('response'));
(在json中,将有一个名为“response”的根对象,内容为$ response变量)。使用这种方法,您不需要创建视图文件 - 如果请求具有“Accept:application / json”标题,则会自动输出json。
答案 1 :(得分:0)
只有那些json响应的区别在于第一个是带有子对象的JSON对象,第二个是带有子对象的JSON对象数组。
以下代码检索客户的所有记录。当你将它编码成json对象时,它被编码为Cutomers数组
$this->Customer->find( 'all' );
您可以通过
获得第一个响应$this->Customer->find( 'first' );
上面的代码只会产生一个Customer对象。