如何用PHP生成JSON数据?

wecizke3  于 2023-06-20  发布在  PHP
关注(0)|答案(8)|浏览(134)
CREATE TABLE Posts
{
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
url VARCHAR(200)
}

json.php代码

<?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文件。

mzsu5hc0

mzsu5hc01#

要在PHP中生成JSON,只需要一个函数json_encode()
在使用数据库时,您需要首先将所有行放入数组。下面是mysqli的示例代码

$sql="select * from Posts limit 20"; 
$result = $db->query($sql);
$posts = $result->fetch_all(MYSQLI_ASSOC);

然后你可以直接使用这个数组,或者将它作为另一个数组的一部分:

echo json_encode($posts);
// or
$response = json_encode([
    'posts' => $posts,
]);

如果需要将其保存到文件中,则只需使用file_put_contents()

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

de90aj5v2#

使用这个:

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

您可以在运行脚本之前创建myfile.json。但如果您拥有完全的sudo权限(读/写权限(对于Mac上的您)),则不是强制性的。
下面是一个工作示例:

<?php 
  
// data stored in an array called posts
$posts = Array (
    "0" => Array (
        "id" => "01",
        "title" => "Hello",
    ),
    "1" => Array (
        "id" => "02",
        "title" => "Yoyo",
    ),
    "2" => Array (
        "id" => "03",
        "title" => "I like Apples",
    )
);
// encode array to json
$json = json_encode($posts);
$bytes = file_put_contents("myfile.json", $json); //generate json file
echo "Here is the myfile data $bytes.";
?>

**Example 2:**另一个json数据和error handling的示例。

<?php

// Data stored in an array called posts
$posts = [
    [
        "id" => "01",
        "title" => "Hello",
    ],
    [
        "id" => "02",
        "title" => "Yoyo",
    ],
    [
        "id" => "03",
        "title" => "I like Apples",
    ]
];

// Encode array to JSON with formatting
$json = json_encode($posts, JSON_PRETTY_PRINT);

// Write JSON to file and handle errors
$file = "myfile.json";
if (file_put_contents($file, $json) !== false) {
    echo "Data has been written to $file.";
} else {
    echo "Error occurred while writing to $file.";
}
?>

当JSON_PRETTY_PRINT作为第二个参数传递给json_encode()时,它告诉函数向生成的JSON字符串添加空格和格式。这使得生成的JSON结构在直接查看时更容易阅读和理解。

**示例3:**使用服务器的SQL数据:

<?php

// Connect to the database
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Fetch data from the database
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    $users = array();
    while ($row = $result->fetch_assoc()) {
        $users[] = $row;
    }

    // Encode SQL data to JSON
    $json = json_encode($users, JSON_PRETTY_PRINT);

    // Write JSON to file
    $file = "users.json";
    if (file_put_contents($file, $json) !== false) {
        echo "Data has been written to $file.";
    } else {
        echo "Error occurred while writing to $file.";
    }
} else {
    echo "No data found.";
}

// Close the database connection
$conn->close();
?>
brc7rcf0

brc7rcf03#

将获取的值插入到数组中,而不是回显。
如果$rows是您的数据,则使用file_put_contents()并将json_encode($rows)插入该文件。

u4dcyp6a

u4dcyp6a4#

如果你正在提取动态记录,最好有一个创建json表示的php文件,而不是每次都创建一个文件。

my_json.php

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

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

mcdcgff0

mcdcgff05#

这里我提到了创建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);

希望它能为你工作…

oyjwcjzk

oyjwcjzk6#

您可以直接使用php的**json_encode函数,使用fopenfwrite**等文件处理函数保存文件。

r55awzrz

r55awzrz7#

首先,你需要解码它:

$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

gfttwv5a

gfttwv5a8#

使用PHP的json methods创建json,然后将其写入fwrite文件。

相关问题