2010-03-18 49 views
89
CREATE TABLE Posts 
{ 
id INT PRIMARY KEY AUTO_INCREMENT, 
title VARCHAR(200), 
url VARCHAR(200) 
} 

json.php代码如何用PHP生成.json文件?

<?php 
$sql=mysql_query("select * from Posts limit 20"); 
echo '{"posts": ['; 
while($row=mysql_fetch_array($sql)) 
{ 
$title=$row['title']; 
$url=$row['url']; 
echo ' 

{ 

"title":"'.$title.'", 

"url":"'.$url.'" 

},'; 
} 
echo ']}'; 

?> 

我不得不产生results.json文件。

回答

177

这里是一个示例代码:

<?php 
$sql="select * from Posts limit 20"; 

$response = array(); 
$posts = array(); 
$result=mysql_query($sql); 
while($row=mysql_fetch_array($result)) { 
    $title=$row['title']; 
    $url=$row['url']; 

    $posts[] = array('title'=> $title, 'url'=> $url); 
} 

$response['posts'] = $posts; 

$fp = fopen('results.json', 'w'); 
fwrite($fp, json_encode($response)); 
fclose($fp); 


?> 
+1

我在我的项目中使用了这段代码。 results.json文件在本地主机上运行良好,并在远程服务器上失败。你能解释为什么那么.. – 2012-12-21 05:53:34

+3

在您的服务器设置中,可以关闭Fwrite – Chris 2013-01-19 20:28:34

+0

allthough虽然这很好,也许是因为我现在使用PHP 5,并且在发布此答案时它不可用,但是您可以摆脱$ result =行和内部你的while循环只是让mysql_feth_array($ sql) – 2014-02-07 13:20:34

24

将您提取的值插入数组而不是回显。

如果您的数据为$rows,则使用file_put_contents()并将json_encode($rows)插入该文件中。

+0

我看到您的答案已发布在最上面的答案之前。如果只有你已经放了一些示例代码,你会得到更多的选票。 – 2015-12-31 14:29:16

3

如果你拉动态记录最好是有一个创建一个JSON表示和每次不创建一个文件1个PHP文件。

my_json.php

$array = array(
    'title' => $title, 
    'url' => $url 
); 

echo stripslashes(json_encode($array)); 

然后在你的脚本中的路径设置为文件my_json.php

+1

当我尝试运行getJason时,我得到*资源解释为脚本,但与MIME类型文本/ html *在控制台中。 – noobcode 2012-12-06 10:22:03

+0

@noobcode为了解决这个问题,我想你应该在'my_json.php'中设置'Content-Type'标题。 – 2015-01-24 15:38:42

17

使用此:

$json_data = json_encode($posts); 
file_put_contents('myfile.json', $json_data); 

为我工作。

3

这里,我已经提到的简单了Syntex用于创建JSON文件并打印JSON文件在相当的方式内的数组值。

$array = array('name' => $name,'id' => $id,'url' => $url); 
$fp = fopen('results.json', 'w'); 
fwrite($fp, json_encode($array, JSON_PRETTY_PRINT)); //here it will print the array pretty 
fclose($fp); 

希望它会为你的作品....

0

首先,你需要将其解码:

$jsonString = file_get_contents('jsonFile.json'); 
$data = json_decode($jsonString, true); 

然后更改数据:

$data[0]['activity_name'] = "TENNIS"; 
// or if you want to change all entries with activity_code "1" 
foreach ($data as $key => $entry) { 
    if ($entry['activity_code'] == '1') { 
     $data[$key]['activity_name'] = "TENNIS"; 
    } 
} 

然后再 - 编码并将其保存回文件中:

$newJsonString = json_encode($data); 
file_put_contents('jsonFile.json', $newJsonString); 

copy