我正在尝试从sql查询创建一个json文件,并使用twitter typeahead搜索此json。然而,json格式看起来并不正确。
json需要采用某种格式作为类型,如下所示;
reobj = re.compile('\d{4}-\d{2}-\d{2}')
for root, subs, files in os.walk('.'):
for name in subs:
if reobj.match(name):
print(name)
但是我的json采用以下格式;
['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California' ...];
新手到php / sql / json我确定有一些非常明显的东西我错过了或做错了。也许我应该使用["{\"title\":\"Item 1\"}","{\"title\":\"Item 2\"}","{\"title\":\"Item 3\"}"
而不是foreach
?我能够回显while
,所以我现在查询正在运行。
如果有人冷我指向正确的方向,我会很感激。
到目前为止我的代码;
$titles
答案 0 :(得分:1)
您正在执行两次json_encode,但情况并非如此。
相反,守则应如下所示:
$data[] = $row;
$titles = json_encode($data);
或只是
$titles = json_encode($row);
答案 1 :(得分:1)
将您想要的数据放入数组中,只在最后对JSON进行编码:
while ($row = $result->fetch_assoc()) {
$data[] = $row['title'];
}
file_put_contents('titles.json', json_encode($data));
答案 2 :(得分:0)
使用json_encode
一次
$data[] = $row; /*$data[] = json_encode($row);*/
并写下:
$titles = json_encode($data);
或强>
$titles = json_encode(array_values($data)); /*You may need to use this to get exact output*/
while
循环后
答案 3 :(得分:-1)
您正在向json array('title'=>'sometitle')
插入关联数组,但您只需要该标题
解决方案是仅将db结果行中的标题值保存到数组中:
while($row = $result->fetch_assoc()){
$data[] = $row['title'];
echo json_encode($data); // dont encode twice
}
file_put_contents('titles.json', json_encode($data));