drll85318
drll85318
2013-09-18 15:14

json编码返回为对象而不是数组

已采纳

I have already read this question and doesn't answer my issue.

I have an Array like this:

Array
(
    [0] => Array
        (
            [COM] => 10659.68
        )

    [1] => Array
        (
            [MCD] => 1219.09
        )

    [2] => Array
        (
            [MCR] => 77047.65
        )

)

And when I make a json_encode() it return this;

[{"COM":10659.68},{"MCD":1219.09},{"MCR":77047.65}]

What I need is get the data in this way:

[["COM":10659.68],["MCD":1219.09],["MCR":77047.65]]

Any idea how can I achieve this

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • doucai5315 doucai5315 8年前

    Even though that's not a valid JSON, you can replace the { with [

    echo str_replace(array('{','}'),array('[',']'),json_encode($your_array)); 
    

    Depending on the content you might need a more complex replacement with regular expressions.

    点赞 评论 复制链接分享
  • dongzhang0243 dongzhang0243 8年前

    More complex solution:

    function toJson($arr){
        $return = array();
        foreach($arr as $k => $v){
            if(is_array($v)) $return[] = toJson($v);
            else $return[] = sprintf('"%s":%s', $k, $v);
        }
        return sprintf('[%s]', implode(',', $return));
    }
    

    Test:

    $input = array(
        array('COM' => '10659.68'),
        array('MCD' => '1219.09'),
        array('MCR' => '77047.65'), 
    );
    var_dump(toJson($input));
    

    string(51) "[["COM":10659.68],["MCD":1219.09],["MCR":77047.65]]"

    点赞 评论 复制链接分享

相关推荐