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 파일은 로컬 호스트에서 잘 작동하며 원격 서버에서 실패합니다. 당신은 설명 할 수 왜 그렇게 ...
인 Vignesh 고 팔라 크리슈 난

4
서버 설정에서 Fwrite를 해제 할 수 있습니다
Chris

지금은 PHP 5를 사용하고 있으며이 답변을 게시 할 때 사용할 수 없었지만 $ result = 행을 제거 할 수는 있지만 while 루프 내부에서 mysql_feth_array ($ sql)

첫 번째 줄을 $ sql = "select * from Posts limit 20"으로 업데이트하십시오; , mysql_query () 제거
Sachin Vairagi

6
fwrite($fp, json_encode($response,JSON_PRETTY_PRINT));-공백을 사용하여 JSON 형식을 지정합니다. 다른 상수 여기에
안드레이 Krasutski

49

이것을 사용하십시오 :

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

스크립트를 실행하기 전에 myfile.json을 작성해야합니다.


실제로 주석 날짜에 데이터를 저장하기 전에 파일을 작성할 필요가 없습니다. 저장 경로를 따라 존재하지 않는 하위 폴더를 작성해야합니다 (있는 경우). 편의상 file_put_contents공식 문서 는 다음과 같습니다 .
Valentine Shi

1
예, 프로그래밍 언어가 발전합니다. 제 게시물 답변은 2017
게시

1
당신이 준 도청에 변화가 없습니다. file_put_contents내가 처음 언급 한 방식대로 작동합니다.
Valentine Shi

30

반입 된 값을 에코 대신 배열에 삽입하십시오.

데이터가있는 경우 해당 파일을 사용 file_put_contents()하여 삽입 하십시오 .json_encode($rows)$rows


2
귀하의 답변이 가장 많이 제기 된 답변보다 먼저 게시 된 것으로 보입니다. 예제 코드 만 입력했다면 더 많은 표를 얻었을 것입니다.
Engin Yapici

7

여기에 생성하기위한 간단한 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);

그것이 당신을 위해 작동하기를 바랍니다 ....




6

동적 레코드를 가져 오는 경우 json 표현을 작성하고 매번 파일을 작성하지 않는 1 개의 php 파일을 갖는 것이 좋습니다.

my_json.php

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

echo stripslashes(json_encode($array)); 

그런 다음 스크립트에서 파일의 경로를 설정하십시오. my_json.php


1
getJason을 사용하여 이것을 실행하려고하면 Resource가 Script로 해석되지만 콘솔에서 MIME 유형 text / html 로 전송됩니다.
codingbbq

@noobcode이를 수정하려면 'my_json.php'에 'Content-Type'헤더를 설정해야한다고 생각합니다.
katalin_2003

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.