如何使用PHP向json输出添加自定义前缀

时间:2016-03-23 01:28:25

标签: php mysql json

我想在从mySQL派生的数据之前添加一些字符串。并在JSON中输出它们。我可以根据我的需要从mySQL中获取数据。但我不能将前缀字符串添加到正确的格式。

预期的json格式

{
    "message": "",//i can do this
    "value": [//but I can't do this the "value":[
        {
            "excName": "Mark",
            "excSup": "chunyun",
            "excId": 20001
        }, {
            "excName": "orion-01",
            "excSup": "orion-01",
            "excId": 20000
        }
     ]
}

PHP

while ($rec_qXcur=mysqli_fetch_assoc($sql_qXcur)){
    $data[] = array(
   "excId"=>$rec_qXcur['exc_id'],
   "excTitle"=>$rec_qXcur['exc_name'],
   "excSup"=>$rec_qXcur['exc_sup']
   );
}
//return json data
echo json_encode($data);

从PHP我得到了这个:

{
"message":"",
//"value":[//this is missing
"0":{//not need
   "excId":"234",
   "excTitle":"Simon Cabaret - Regular Seat ",
   "excSup":"simon"
},
"1":{//not need
   "excId":"245",
   "excTitle":"Simon Cabaret - VIP Seat (01Nov15 - 30Apr16)",
   "excSup":"simon"
}

根据预期的json格式。我错过了"value":[。我尝试将其添加到$data,但它无效。

1 个答案:

答案 0 :(得分:4)

您只是将它们添加到数据中。您需要将它们添加到value数组。

所以json_encode()可能正在创建一个对象文字{},因为你的数组同时包含命名元素和顺序元素。一旦它只包含顺序元素,json_encode()应该(我相信)返回一个数组文字[];

$data = array(
    'message' => 'Your message here',
    'value'   => array()
);

while ($rec_qXcur=mysqli_fetch_assoc($sql_qXcur)){
   $data['value'][] = array(
       "excId"=>$rec_qXcur['exc_id'],
       "excTitle"=>$rec_qXcur['exc_name'],
       "excSup"=>$rec_qXcur['exc_sup']
   );
}

echo json_encode($data);