如何将字符串从MySql转换为JSON数组

时间:2015-04-19 19:00:13

标签: php json

我正在尝试将从MySql收到的数据转换为JSON,格式如下 -

[
    {
        "question": "This is a question",
        "options": [
            "Option which may contain double or single quoted text",
            "Option 2",
            "Option 3",
            "Option 4"
        ]
    }
]

我的相关PHP代码,到目前为止 -

<?php
$result = mysql_query("select * from test_table limit 5", $db);  
$json_response = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$option_01 = $row['Option_1'];
$option_02 = $row['Option_2'];
$option_03 = $row['Option_3'];
$option_04 = $row['Option_4'];

$row_array['question'] = $row['Question'];

// I am unable to format Options ($option_01,$option_02,$option_03,$option_04) into desired Array as mentioned in starting
$row_array['options'] = "";
array_push($json_response,$row_array);
}
echo json_encode($json_response);
?>

但我坚持如何制作从MySql数据库收到的选项变量数组?

2 个答案:

答案 0 :(得分:2)

您需要将$row_array['options']设为数组

$row_array['options'] = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
   $row_array['options'][] = $row['Option_1'];
   $row_array['options'][] = $row['Option_2'];
   $row_array['options'][] = $row['Option_3'];
   $row_array['options'][] = $row['Option_4'];
}

另外,请记住mysql_ functions are deprecated

答案 1 :(得分:0)

试试这个

<?php
$result = mysql_query("select * from test_table limit 5", $db);  
$json_response = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$ans = array();
$ans["question"]= $row["question"];
$ans["options"]=$row;
$json_response[]=$ans;
}
echo json_encode($json_response);
?>

这将产生与您预期相同的结果,但在选项数组中,您也会得到问题字段。但是在处理json结果时可以忽略它。

注意: - 在较新版本中不推荐使用Mysql函数。