json_encode缺少包含日期的行的一部分

时间:2014-05-08 13:36:52

标签: php json

代码

$table = array();
$table['cols'] = array(

    array('label' => 'Date', 'type' => 'date'),
    array('label' => 'Orders', 'type' => 'number')

);

    $rows = array();
    while($row = oci_fetch_assoc($stid)) {

        $temp = array();

        $temp[] = array('h' => (int) $row['Date']);
        $temp[] = array('v' => (int) $row['Orders']);
        $rows[] = array('c' => $temp);

    }

    $table['rows'] = $rows;
    $jsonTable = json_encode($table);

更新

感谢WereWolf - 答案的Alpha,它正在使用完整的日期,但现在我有一些奇怪的问题\​​和/如下所示。

{
   "cols":[
      {
         "label":"Date",
         "type":"date"
      },
      {
         "label":"Orders",
         "type":"number"
      }
   ],
   "rows":[
      {
         "c":[
            {
               "h":"2014\/05\/02 00:00"
            },
            {
               "v":8
            }
         ]
      },
      {
         "c":[
            {
               "h":"2014\/05\/06 00:00"
            },
            {
               "v":10
            }
         ]
      },
      {
         "c":[
            {
               "h":"2014\/05\/07 00:00"
            },
            {
               "v":9
            }
         ]
      },
      {
         "c":[
            {
               "h":"2014\/05\/08 00:00"
            },
            {
               "v":10
            }
         ]
      }
   ]
}

2 个答案:

答案 0 :(得分:1)

这是因为您使用了以下代码:

$temp[] = array('h' => (int) $row['Date']);

删除(int)

$temp[] = array('h' => $row['Date']);

例如,试试这个:

$d = '2014/05/08 00:00';
echo $d; // 2014/05/08 00:00

现在试试这个:

$d = '2014/05/08 00:00';
$d = (int) $d;
echo $d; // 2014

Becaue (int)正在解析字符串'2014/05/08 00:00'中的整数,因此它只是排除了/05/08 00:00'中的所有内容,因为/它不是int 1}}。

答案 1 :(得分:0)

使用此

json_encode($str, JSON_UNESCAPED_SLASHES);

有关更多信息和其他标记,请参阅Documentation

同时删除(int)施放到目前为止。