491 Stimmen

Wie kann ich eine JSON-Datei mit PHP parsen?

Ich habe versucht, eine JSON-Datei mit PHP zu parsen. Aber ich stecke jetzt fest.

Dies ist der Inhalt meiner JSON-Datei:

{
    "John": {
        "status":"Wait"
    },
    "Jennifer": {
        "status":"Active"
    },
    "James": {
        "status":"Active",
        "age":56,
        "count":10,
        "progress":0.0029857,
        "bad":0
    }
}

Und das habe ich bis jetzt ausprobiert:

<?php

$string = file_get_contents("/home/michael/test.json");
$json_a = json_decode($string, true);

echo $json_a['John'][status];
echo $json_a['Jennifer'][status];

Aber da ich die Namen nicht kenne (wie 'John' , 'Jennifer' ) und alle verfügbaren Schlüssel und Werte (wie 'age' , 'count' ), denke ich, dass ich eine foreach-Schleife erstellen muss.

Ich wäre dankbar für ein Beispiel dafür.

65 Stimmen

Sie sind auf dem richtigen Weg. Schlagen Sie die Syntax für foreach nach (Sie sollten Schlüssel und Werte erhalten). Geben Sie noch nicht auf!

11 Stimmen

@Stefan Mai: foreach($variable as $key => $val) sollte das sein, was Sie wollen :-)

6 Stimmen

@JamWaffles Haha, danke. Ich hatte gehofft, dass OP ein paar Erfahrungen beim Nachschlagen sammeln könnte. Upvotes, weil das wirklich alles ist, was er/sie braucht.

16voto

vivek Punkte 354

Versuchen Sie dies

    $json_data = '{
    "John": {
        "status":"Wait"
    },
    "Jennifer": {
        "status":"Active"
    },
    "James": {
        "status":"Active",
        "age":56,
        "count":10,
        "progress":0.0029857,
        "bad":0
      }
     }';

    $decode_data = json_decode($json_data);
    foreach($decode_data as $key=>$value){

            print_r($value);
    }

11 Stimmen

Versuchen Sie dies Antworten auf StackOverflow sind von geringem Wert, da sie nur wenig dazu beitragen, den OP und künftige Forscher weiterzubilden. Wenn Sie diese Antwort auf der Seite lassen wollen, erklären Sie bitte, wie Ihre Antwort funktioniert und warum sie ratsam ist.

0 Stimmen

Der OP fragt nach dem Parsen von Daten aus einer JSON-Datei, nicht nach JSON aus einer Variable in Ihrem Code.

9voto

Indrajeet Singh Punkte 2830

Versuchen Sie es:

$string = file_get_contents("/home/michael/test.json");
$json = json_decode($string, true);

foreach ($json as $key => $value) {
    if (!is_array($value)) {
        echo $key . '=>' . $value . '<br />';
    } else {
        foreach ($value as $key => $val) {
            echo $key . '=>' . $val . '<br />';
        }
    }
}

2 Stimmen

Versuchen Sie dies Antworten auf StackOverflow sind von geringem Wert, da sie nur sehr wenig zur Aufklärung des OP und zukünftiger Forscher beitragen. Wenn Sie diese Antwort auf der Seite lassen wollen, erklären Sie bitte, wie Ihre Antwort funktioniert und warum sie ratsam ist.

9voto

Diptesh Atha Punkte 791

Eher eine Standardantwort:

$jsondata = file_get_contents(PATH_TO_JSON_FILE."/jsonfile.json");

$array = json_decode($jsondata,true);

foreach($array as $k=>$val):
    echo '<b>Name: '.$k.'</b></br>';
    $keys = array_keys($val);
    foreach($keys as $key):
        echo '&nbsp;'.ucfirst($key).' = '.$val[$key].'</br>';
    endforeach;
endforeach;

Und die Ausgabe ist:

Name: John
 Status = Wait
Name: Jennifer
 Status = Active
Name: James
 Status = Active
 Age = 56
 Count = 10
 Progress = 0.0029857
 Bad = 0

0 Stimmen

Oder kann sagen $data = json_decode(file_get_contents("db.json"), true); für die erste Zeile

3 Stimmen

Reine Code-Antworten sind auf StackOverflow von geringem Wert, da sie nur sehr wenig zur Aufklärung des Auftraggebers und künftiger Forscher beitragen. Wenn Sie diese Antwort auf der Seite lassen wollen, erklären Sie bitte, wie Ihre Antwort funktioniert und warum sie ratsam ist.

1 Stimmen

Es macht keinen Sinn, die array_keys() hier, wenn die folgenden foreach() Schleife kann die Daten ganz von selbst liefern. Ich glaube nicht, dass ich mit "mehr Standard" einverstanden bin, und ich kann mir einige bessere Variablennamen vorstellen als $val .

8voto

Alex Punkte 61397

Schleife durch das JSON mit einer foreach Schleife als Schlüssel-Werte-Paare. Führen Sie eine Typprüfung durch, um festzustellen, ob weitere Schleifen durchgeführt werden müssen.

foreach($json_a as $key => $value) {
    echo $key;
    if (gettype($value) == "object") {
        foreach ($value as $key => $value) {
          # and so on
        }
    }
}

0 Stimmen

Oder noch besser, Sie kennen die Struktur schon vorher.

8voto

sunny bhadania Punkte 423
<?php
$json = '{
    "response": {
        "data": [{"identifier": "Be Soft Drinker, Inc.", "entityName": "BusinessPartner"}],
        "status": 0,
        "totalRows": 83,
        "startRow": 0,
        "endRow": 82
    }
}';
$json = json_decode($json, true);
//echo '<pre>'; print_r($json); exit;
echo $json['response']['data'][0]['identifier'];
$json['response']['data'][0]['entityName']
echo $json['response']['status']; 
echo $json['response']['totalRows']; 
echo $json['response']['startRow']; 
echo $json['response']['endRow']; 

?>

4 Stimmen

Reine Code-Antworten sind auf StackOverflow von geringem Wert, da sie nur sehr wenig zur Aufklärung des Auftraggebers und künftiger Forscher beitragen. Wenn Sie diese Antwort auf der Seite lassen wollen, erklären Sie bitte, wie Ihre Antwort funktioniert und warum sie ratsam ist.

1 Stimmen

Anstatt die vom Auftraggeber zur Verfügung gestellten Beispieldaten zu ignorieren, versuchen Sie bitte, die Frage so zu beantworten, dass sie sich unmittelbar und direkt auf die gestellte Frage bezieht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X