PHPで.jsonファイルを生成する方法は?


127
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ファイルを生成する必要があります。


1
私たちの質問にいくつかの説明/コンテキストがあることは、非常に礼儀正しくありません。この質問は、より具体的には誰と一般的には、スタックオーバーフローのコミュニティへの暗黙的な順序のように思える...
Sl4rtib4rtf4st

回答:


247

これがサンプルコードです:

<?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ファイルはローカルホストでうまく機能し、リモートサーバーで失敗します。あなたは...なぜそんなに説明することができます
ビネーシュGopalakrishnan

4
サーバー設定でFwriteをオフにできる
Chris

PHP5を現在使用していて、この回答が投稿された時点では利用できなかったため、これは素晴らしいことですが、$ result =行を削除して、whileループ内でmysql_feth_array($ sql)を作成してください

1行目を$ sql = "select * from Posts limit 20"に更新してください。、mysql_query()を削除
Sachin Vairagi

6
fwrite($fp, json_encode($response,JSON_PRETTY_PRINT));-空白を使用してJSONをフォーマットします。その他の定数はこちら
Andrei Krasutski、2018年

49

これを使って:

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

スクリプトを実行する前に、myfile.jsonを作成する必要があります。


実際、コメントの日付では、データを保存する前にファイルを作成する必要はありません。ただし、存在しない場合は、保存パスに沿って、存在しないサブフォルダーを作成する必要があります。便宜上、file_put_contents公式ドキュメントを以下に示します。
バレンタイン市、

1
はい、プログラミング言語は進化します。私の投稿の回答は2017
投稿さ

1
あなたが与えた切り取られたものに変化はありません。file_put_contents私の最初のコメントで述べたように、その方法はうまくいきます。
バレンタイン市

30

エコーするのではなく、フェッチした値を配列に挿入します。

データの場合は、使用file_put_contents()json_encode($rows)てそのファイルに挿入し$rowsます。


2
あなたの回答は、最も賛成された回答の前に投稿されたようです。もしあなたがいくつかのサンプルコードを入れていたなら、あなたはもっと多くの票を得たでしょう。
Engin Yapici

7

ここでは、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);

それがあなたのためにうまくいくことを願っています...




6

動的レコードをプルする場合は、json表現を作成する1つのphpファイルを使用し、毎回ファイルを作成しない方がよいでしょう。

my_json.php

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

echo stripslashes(json_encode($array)); 

次に、スクリプトでファイルへのパスを設定します my_json.php


1
getJasonを使用してこれを実行しようとすると、Resourceがスクリプトとして解釈されますが、コンソールでMIMEタイプtext / html転送されます
codingbbq

@noobcodeこれを修正するには、 'my_json.php'に 'Content-Type'ヘッダーを設定する必要があると思います。
katalin_2003、2015年

5

まず、それをデコードする必要があります:

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

写す

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.