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.

3voto

Hamender Punkte 39

Versuchen Sie es:

foreach ($json_a as $key => $value)
 {
   echo $key, ' : ';
   foreach($value as $v)
   {
       echo $v."  ";
   }
}

2 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.

1voto

Daniel Blanco Punkte 471

Wenn Sie einen json-String dekodieren, erhalten Sie ein Objekt, kein Array. Der beste Weg, die Struktur zu sehen, die Sie erhalten, ist ein var_dump der Dekodierung zu machen. (Dieser var_dump kann Ihnen helfen, die Struktur zu verstehen, vor allem in komplexen Fällen).

<?php
     $json = file_get_contents('/home/michael/test.json');
     $json_a = json_decode($json);
     var_dump($json_a); // just to see the structure. It will help you for future cases
     echo "\n";
     foreach($json_a as $row){
         echo $row->status;
         echo "\n";
     }
?>

1voto

$json_a = json_decode($string, TRUE);
$json_o = json_decode($string);

foreach($json_a as $person => $value)
{
    foreach($value as $key => $personal)
    {
        echo $person. " with ".$key . " is ".$personal;
        echo "<br>";
    }

}

6 Stimmen

Hallo, das könnte das Problem lösen... aber es wäre gut, wenn du deine Antwort bearbeiten und ein wenig mehr erklären könntest, wie und warum es funktioniert :) Vergessen Sie nicht - es gibt haufenweise Neulinge auf Stack overflow, und sie könnten das eine oder andere von Ihrem Fachwissen lernen - was für Sie offensichtlich ist, ist es für sie vielleicht nicht.

0voto

The Bumpaster Punkte 884

Der schnellste Weg, um alle json-Werte zu echo ist mit Schleife in Schleife, die erste Schleife wird alle Objekte und die zweite die Werte zu erhalten...

foreach($data as $object) {

        foreach($object as $value) {

            echo $value;

        }

    }

-1voto

muneeb Punkte 17

Sie müssen so geben:

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

echo "<>"

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

br inside <>

Daraus ergibt sich das Ergebnis :

wait
active

1 Stimmen

So tun 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

Diese Antwort scheint die Frage falsch zu verstehen. Der OP kennt die "Name"-Schlüssel nicht im Voraus, sie können also nicht fest kodiert werden. Diese Antwort ist falsch.

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