V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jianghu52
V2EX  ›  PHP

有人用cakephp的么。求教一个关于json的问题。

  •  
  •   jianghu52 · 2013-09-16 16:48:04 +08:00 · 3231 次点击
    这是一个创建于 4086 天前的主题,其中的信息可能已经有所发展或是发生改变。
    cakephp是个比较标准的mvc的结构。现在有个问题。
    我在后台controller,取了一组数据,放在二维数组变量里面了。
    $datalist:
    格式如下

    array(2) {
    [0]=>
    array(1) {
    ["testtable"]=>
    array(2) {
    ["c_type"]=>
    string(1) "1"
    ["c_index"]=>
    string(1) "0"
    }
    }
    [1]=>
    array(1) {
    ["testtable"]=>
    array(2) {
    ["c_type"]=>
    string(1) "2"
    ["c_index"]=>
    string(1) "1"
    }
    }
    }
    这样的一个数组,我想放在前台的一个json类型的变量。
    希望这个变量最后是这样的。
    var myJSONObject = {
    "testtable": [
    {"c_type": "1", "c_index": "0"}
    ]
    "testtable": [
    {"c_type": "2", "c_index": "1"}
    ]
    };

    我现在的做法,是循环controller得到的数组,然后把值再组合一次,赋给json变量。
    类似写法如下:
    {/literal}{foreach from=$datalist item=datainfo}{literal}
    myJSONObject[{/literal}{$datainfo.c_index}{literal}] =
    {"testtable" :
    {"c_index":{/literal}{$datainfo.c_index}{literal},
    "c_type":{/literal}{$datainfo.c_type}{literal}
    }
    }
    {/literal}{/foreach}{literal}
    老实说看这样的代码我真心恶心,但是实在不知道还有什么其他的办法。我也试过在后台controller里面,直接把数组用json_encode方法直接转成字符串,但是赋往前台的语句怎么写都不对。希望有高人指点。
    6 条回复    1970-01-01 08:00:00 +08:00
    xingis
        1
    xingis  
       2013-09-16 17:39:38 +08:00
    qiayue
        2
    qiayue  
       2013-09-16 17:51:53 +08:00
    json_encode 生成的结构给前端用是完全没有问题的,我现在就这样用,同时给手机端提供 api 也是没问题。
    jianghu52
        3
    jianghu52  
    OP
       2013-09-16 21:48:24 +08:00
    单独的echo json_encode(数组)。这样是没有问题的。但是我这个该死的项目前端还用了smarty。所以{$}这样的符号都不认。所以我卡在这里了
    msg7086
        4
    msg7086  
       2013-09-16 23:12:47 +08:00   ❤️ 1
    @jianghu52

    var myJSONObject = {$json_object|json_encode};

    smarty里还有比这更简单的做法么……
    neodreamer
        5
    neodreamer  
       2013-09-17 01:55:23 +08:00 via iPad
    http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

    先调整好数组,然后json encode

    楼主我觉得你要的是这个。
    jianghu52
        6
    jianghu52  
    OP
       2013-09-17 09:00:43 +08:00
    @msg7086 谢谢,这个方法很管用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1596 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.