Bagaimana cara menghasilkan file .json dengan PHP?

127
CREATE TABLE Posts
{
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
url VARCHAR(200)
}

kode 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 ']}';

?>

Saya harus membuat results.jsonfile.

Egglabs
sumber
1
Memiliki beberapa penjelasan / konteks dalam pertanyaan kami adalah yang paling tidak sopan. Pertanyaan ini tampaknya lebih seperti perintah implisit untuk tidak ada orang tertentu dan komunitas stack overflow secara umum ..
Sl4rtib4rtf4st

Jawaban:

247

Berikut ini contoh kode:

<?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);


?> 
Alec Smart
sumber
1
Saya menggunakan kode ini pada proyek saya. File results.json bekerja dengan baik pada host lokal dan gagal pada server jauh. Bisakah Anda jelaskan mengapa demikian ..
Vignesh Gopalakrishnan
4
Fwrite dapat dimatikan dalam pengaturan server Anda
Chris
allthough ini hebat mungkin karena saya menggunakan PHP 5 sekarang dan itu tidak tersedia pada saat jawaban ini diposting tetapi Anda dapat menyingkirkan $ result = line dan di dalam loop sementara Anda hanya membuat mysql_feth_array ($ sql)
Harap perbarui baris pertama ke $ sql = "pilih * dari batas Posting 20"; , hapus mysql_query ()
Sachin Vairagi
6
fwrite($fp, json_encode($response,JSON_PRETTY_PRINT));- Menggunakan spasi putih untuk memformat JSON. Konstanta lain di sini
Andrei Krasutski
49

Gunakan ini:

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

Anda harus membuat myfile.json sebelum Anda menjalankan skrip.

RileyManda
sumber
Bahkan pada tanggal komentar tidak perlu membuat file sebelum menyimpan data. Meskipun Anda masih harus membuat subfolder yang tidak ada, jika ada, di sepanjang jalur penyimpanan. Berikut adalah dokumen resmi untuk file_put_contents hanya untuk kenyamanan.
Valentine Shi
1
Ya, bahasa pemrograman berkembang. Jawaban postingan saya diposting pada 2017. Anda seharusnya sudah memposting jawaban baru dengan cara yang diperbarui untuk melakukannya alih-alih hanya kode downvoted yang berfungsi pada 2017
RileyManda
1
Tidak ada perubahan pada potongan yang Anda berikan. Cara file_put_contentskerjanya seperti yang saya sebutkan di komentar awal saya.
Valentine Shi
30

Masukkan nilai yang Anda ambil ke dalam array alih-alih bergema.

Gunakan file_put_contents()dan masukkan json_encode($rows)ke file itu, apakah $rowsdata Anda.

chelmertz
sumber
2
Saya melihat jawaban Anda diposting sebelum jawaban yang paling bagus. Andai saja Anda memberikan beberapa contoh kode, Anda akan mendapat lebih banyak suara.
Engin Yapici
7

Di sini saya telah menyebutkan sintaks sederhana untuk membuat file json dan mencetak nilai array di dalam file json dengan cara yang cantik.

$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);

Semoga ini akan berhasil untuk Anda ....

Pasupathi Thangavel
sumber
6

Anda cukup menggunakan fungsi json_encode dari php dan menyimpan file dengan fungsi penanganan file seperti fopen dan fwrite .

Sarfraz
sumber
6

Jika Anda menarik catatan dinamis, lebih baik memiliki 1 file php yang membuat representasi json dan tidak membuat file setiap kali.

my_json.php

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

echo stripslashes(json_encode($array)); 

Kemudian di skrip Anda setel path ke file my_json.php

CyberJunkie
sumber
1
Ketika saya mencoba menjalankan ini menggunakan getJason, saya mendapatkan Resource ditafsirkan sebagai Script tetapi ditransfer dengan MIME ketik teks / html di konsol.
codingbbq
@noobcode Untuk memperbaikinya, saya pikir Anda harus menetapkan header 'Tipe-Konten' di 'my_json.php' Anda.
katalin_2003
5

Pertama, Anda perlu memecahkan kode itu:

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

Kemudian ubah data:

$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";
    }
}

Kemudian kodekan ulang dan simpan kembali dalam file:

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

menyalin

Darkcoder
sumber