Wie generiert man JSON-Daten mit PHP?

Lesezeit: 5 Minuten

Benutzer-Avatar
Eierlabs

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

json.php-Code

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

?>

Ich muss generieren results.json Datei.

  • Eine Erklärung / einen Kontext in unserer Frage zu haben, ist zumindest höflich. Diese Frage scheint eher ein impliziter Befehl für niemanden im Besonderen und die Stack-Overflow-Community im Allgemeinen zu sein.

    – Sl4rtib4rtf4st

    29. Januar 2020 um 13:40 Uhr

Benutzer-Avatar
Alec Smart

Um JSON in PHP zu generieren, benötigen Sie nur eine Funktion, json_encode().

Wenn Sie mit der Datenbank arbeiten, müssen Sie zuerst alle Zeilen in das Array bringen. Hier ist ein Beispielcode für mysqli

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

dann können Sie dieses Array entweder direkt verwenden oder es zu einem Teil eines anderen Arrays machen:

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

Wenn Sie es in einer Datei speichern müssen, verwenden Sie einfach file_put_contents()

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

  • Ich habe diesen Code in meinem Projekt verwendet. Die Datei results.json funktioniert gut auf dem lokalen Host und schlägt auf dem Remote-Server fehl. Kannst du erklären warum so..

    – Vignesh Gopalakrishnan

    21. Dezember 2012 um 5:53 Uhr

  • Fwrite könnte in Ihren Servereinstellungen deaktiviert sein

    – Chris

    19. Januar 2013 um 20:28 Uhr


  • Obwohl dies großartig ist, vielleicht weil ich jetzt PHP 5 verwende und es zum Zeitpunkt der Veröffentlichung dieser Antwort nicht verfügbar war, können Sie die Zeile $result= loswerden und in Ihrer While-Schleife einfach das mysql_feth_array($sql) erstellen.

    Benutzer3125900

    7. Februar 2014 um 13:20 Uhr

  • Bitte aktualisieren Sie die erste Zeile auf $sql = “select * from Posts limit 20”; , entfernen Sie mysql_query()

    – Sachin Vairagi

    19. August 2016 um 7:12 Uhr

  • fwrite($fp, json_encode($response,JSON_PRETTY_PRINT)); – verwendet Leerzeichen, um den JSON zu formatieren. Andere Konstanten hier

    – Andrej Krasutski

    8. Januar 2018 um 9:12 Uhr


Benutzer-Avatar
RileyManda

Benutze das:

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

Sie können myfile.json erstellen, bevor Sie das Skript ausführen. Dies ist jedoch nicht obligatorisch, wenn Sie über vollständige sudo-Berechtigungen verfügen (Lese-/Schreibberechtigungen (für Sie auf dem Mac).

Hier ist ein funktionierendes Beispiel:

<?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.";
?>

  • Tatsächlich ist es am Kommentardatum nicht erforderlich, die Datei vor dem Speichern der Daten zu erstellen. Sie müssen jedoch noch die nicht vorhandenen Unterordner entlang des Speicherpfads erstellen, falls vorhanden. Hier ist der offizielles Dokument für file_put_contents nur aus Bequemlichkeit.

    – Valentine Shi

    16. Mai 2019 um 6:01 Uhr

  • Ja, Programmiersprachen entwickeln sich weiter. Meine Post-Antwort wurde 2017 gepostet. Sie hätten eine neue Antwort mit einer aktualisierten Vorgehensweise posten sollen, anstatt nur Code herunterzustimmen, der 2017 funktionierte

    – RileyManda

    17. Mai 2019 um 5:22 Uhr

  • Es gibt keine Änderung an dem Snipped, das Sie gegeben haben. Genau so file_put_contents Werke, die ich in meinem ersten Kommentar erwähnt habe.

    – Valentine Shi

    17. Mai 2019 um 5:30 Uhr

  • Ok, danke, ich nehme die notwendigen Änderungen an meiner Antwort vor. Danke, Valentine

    – RileyManda

    11. September 2021 um 22:02 Uhr

Benutzer-Avatar
chelmertz

Fügen Sie Ihre abgerufenen Werte in ein Array ein, anstatt sie zu echoen.

Verwenden file_put_contents() und einfügen json_encode($rows) in diese Datei, wenn $rows sind Ihre Daten.

  • Wie ich sehe, wurde Ihre Antwort vor der am meisten positiv bewerteten gepostet. Wenn Sie nur einen Beispielcode eingefügt hätten, hätten Sie viel mehr Stimmen erhalten.

    – Engin Yapici

    31. Dezember 2015 um 14:29 Uhr

Benutzer-Avatar
Pasupathi Thangavel

Hier habe ich den einfachen syntex für create erwähnt json-Datei und drucken Sie den Array-Wert in der json Datei in hübscher Weise.

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

Hoffe es funktioniert bei dir….

Benutzer-Avatar
CyberJunkie

Wenn Sie dynamische Datensätze abrufen, ist es besser, eine PHP-Datei zu haben, die eine JSON-Darstellung erstellt, und nicht jedes Mal eine Datei zu erstellen.

my_json.php

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

        

Legen Sie dann in Ihrem Skript den Pfad zu der Datei fest my_json.php

  • Wenn ich versuche, dies mit getJason auszuführen, bekomme ich Ressource wird als Skript interpretiert, aber mit dem MIME-Typ text/html übertragen in Konsole.

    – Codierungbbq

    6. Dezember 2012 um 10:22 Uhr

  • @noobcode Um das zu beheben, sollten Sie meiner Meinung nach einen ‚Content-Type‘-Header in Ihrer ‚my_json.php‘ setzen.

    – Katalin_2003

    24. Januar 2015 um 15:38 Uhr

Benutzer-Avatar
Sarfraz

Sie können einfach verwenden json_encode Funktion von php und Datei speichern mit Dateihandhabungsfunktionen wie z föffnen und fschreiben.

  • Wenn ich versuche, dies mit getJason auszuführen, bekomme ich Ressource wird als Skript interpretiert, aber mit dem MIME-Typ text/html übertragen in Konsole.

    – Codierungbbq

    6. Dezember 2012 um 10:22 Uhr

  • @noobcode Um das zu beheben, sollten Sie meiner Meinung nach einen ‚Content-Type‘-Header in Ihrer ‚my_json.php‘ setzen.

    – Katalin_2003

    24. Januar 2015 um 15:38 Uhr

Benutzer-Avatar
Darkcoder

Zuerst müssen Sie es entschlüsseln:

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

Dann ändern Sie die Daten:

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

Dann neu codieren und wieder in der Datei speichern:

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

Kopieren

1018770cookie-checkWie generiert man JSON-Daten mit PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy