InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: PHP - JSON auslesen Artikel anzeigen

John schrieb am Dienstag, den 20 August 2019 #1
Und bei einem multidimensionalen Array:

1$element['parent']['name'];
Thomas ✶✶✶✶✶ schrieb am Freitag, den 21 Januar 2022 #2
Hallo Herr Zenk!

Ich habe diesbezüglich ein Problem, vielleicht haben Sie einen Rat!

Ich erstelle gerade einen Tabelle anhand einer json datei(test.json). Das auslesen/einfügen der einzelnen Zeilen/Werte klappt soweit auch ganz gut:
Beispiel: <td &nbsp>&nbsp;<?php echo $dataObject->mobile; ?>&nbsp;</td>

auch kleiner Verschachtelungen sind kein Problem. Beispiel: echo $dataObject->entities[0]->publicIds[0]->identifier;

Jetzt habe ich in der test.json aber eine Zeile, bei der ich einfach nicht weiterkomme. Trotz vielem lesen und ausprobieren weiß ich nicht mehr weiter, wie ich die Daten aus der Zeile ansprechen kann?! Die Zeile sieht so aus:

[vcardArray] => Array ( [0] => vcard [1] => Array ( [0] => Array ( [0] => version [1] => stdClass Object ( ) [2] => text [3] => 4.0 ) [1] => Array ( [0] => fn [1] => stdClass Object ( ) [2] => text [3] => NameCheap, Inc. ) ) )

Das einzige was mir gelingen möchte ist die Ausgabe von "vcard" mit

echo $dataObject->entities[0]->vcardArray[0]

Mittel jsonutils.com konnte ich es zumindest übersichtlicher anzeigen:

"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"NameCheap, Inc."
]
]
],

Ich habe jedoch leider keine Idee mehr, wie ich die Ergebnisse sinnvoll ansprechen kann.
Können Sie mir helfen?

Viele Grüße

Thomas
Thomas ✶✶✶✶✶ schrieb am Freitag, den 21 Januar 2022 #3
Nachtrag:

In der test.json Datei sieht das so aus:

"vcardArray":["vcard",[["version",{},"text","4.0"],["fn",{},"text","NameCheap, Inc."]]]


Falls es hilft!

Viele Grüße

Thomas
Thomas schrieb am Freitag, den 21 Januar 2022 #4
Danke Herr Zenk!

Ich bin sicher, Sie hätten mir noch geantwortet, bin aber schon auf die Lösung gekommen:-)

Habe die Datei zunächst ausgegeben mit folgendem Code:
<?php
$jsonfile = file_get_contents('rdapwhois.json');
$jsonarray = json_decode($jsonfile);
/* Ausgabe */
echo "<pre>";
print_r($jsonarray);
echo "</pre>";
?>

wodurch ich es sehr viel Übersichtlicher erhielt:

[vcardArray] => Array
(
[0] => vcard
[1] => Array
(
[0] => Array
(
[0] => version
[1] => stdClass Object
(
)

[2] => text
[3] => 4.0
)

[1] => Array
(
[0] => fn
[1] => stdClass Object
(
)

[2] => text
[3] => NameCheap, Inc.
)

)

)

Das konnte ich dann ansprechen mit: echo $dataObject->entities[0]->vcardArray[1][1][3];

Wollte Ihnen meine Lösung nur zur Kenntnis geben!

Vielen Dank trotzdem

Thomas
Thomas schrieb am Donnerstag, den 3 Februar 2022 #5
Hallo Herr Zenk!

Ich stehe leider vor dem nächsten Problem, mit dem ich nun tatsächlich nicht weiterkomme:

Wie bereits ausgeführt, spreche ich die Schlüssel mit

echo $dataObject->entities[0]->vcardArray[1][1][3]

an, was auch problemlos klappt!

Nun kann es aber sein, dass "entities" anders benannt wurde, sonst ändert sich an der Reihenfolge nichts, nur dass ich vorher eben nicht weiss dass der Schlüssel entities heisst.

Gibt es eine Möglichkeit, den Schlüssel ->entities-> quasi zu "überspringen" oder eine Art Wildcard?

Gibt es dafür eine Lösung?

Gruss

Thomas
Thomas schrieb am Donnerstag, den 3 Februar 2022 #6
Hallo Herr Zenk!

Es ist doch zum "Mäuse Melken"!:-)

Ewig probiere ich rum, dann entschließ ich mich Sie zu fragen und plötzlich finde ich selbst eine Lösung!

Hier nun die Lösung für Ihre Doku:

Ausgangsstring: $dataObject->objects->entities->contact->address[0]->value;
->entities... war der Wert, der vorher unbekannt war und auch anders heißen könnte!

<?php

$json = file_get_contents('ip.json');
$dataObject = json_decode($json);
$var = key(get_object_vars($dataObject->objects));
echo $dataObject->objects->$var->contact->address[0]->value;
//print_r($dataObject);
?>

Die Variable §var ersetzt den Schlüssel, den ich nicht kenne! In meiner vorigen Anfrage wurde der als "entities" bezeichnet.

Das nächste mal frag ich entweder gar nicht mehr, oder ich frage Sie gleich und erspare mir stundenlanges "Kopfrauchen":-))

Danke trotzdem:-)

Thomas
Thomas schrieb am Mittwoch, den 22 Juni 2022 #7
Sehr geehrter Herr Zenk!

Nach langer Zeit suche ich mal wieder nach einer Lösung und hoffe die bei Ihnen zu finden!

Ich versuche krampfhaft:-) einer existierenden json.Datei einen Wert hinzuzufügen, es will mir nicht gelingen.

Die existierende Datei sieht ungefähr so aus:
{
"entities": {
"handle": "AEA8-ARIN",
"label": "Amazon Web Services Elastic Compute Cloud, EC2\n410 Terry Avenue North\nSeattle\nWA\n98109-5210\nUnited States"
}
}

Nun soll diese Datei um einen neuen Wert erweitert werden, den ich zuvor einer anderen jsonDatei entnommen und in einer Variablen gespeichert habe. Das gelingt mir aber nicht. bisher habe ich verschiedene Möglichkeiten ausprobiert, mein vielversprechendster sieht so aus:

<?php

$jsonarray1 = json_decode(file_get_contents('wow.json', true));
if ($jsonarray1->entities[0]->entities[0]->vcardArray[1][3][3] == TRUE) {

$data = $jsonarray1->entities[0]->entities[0]->vcardArray[1][3][3];

$jsonarray2 = json_decode(file_get_contents("0_entities.json", true));


$jsonarray2 = [
'Kontakt' => $data
];

file_put_contents('0_entities.json', json_encode($jsonarray2));

}
?>

Dieser Code überschreibt mir jedoch die schon bestehende Datei 0_entities.json komplett mit dem Wert Kontakt = $data, statt sie einfach anzuhängen!
Aussehen sollte es so:

{
"entities": {
"handle": "AEA8-ARIN",
"label": "Amazon Web Services Elastic Compute Cloud, EC2\n410 Terry Avenue North\nSeattle\nWA\n98109-5210\nUnited States",

}
}
Hilfe schrieb am Freitag, den 24 Juni 2022 #8
Hallo, verwenden sie die array Funktion array_push()
Marc ✶✶✶✶✶ schrieb am Dienstag, den 25 April 2023 #9
Moin Moin,
ich habe ein Problem, ich versuche diesen Codeschnipsel gerade, jedoch verzweifel ich, denn meine JSON, bekommt noch einen anderen ARRAY vorangesetzt :( und somit kann ich die Ausgabe nicht starten...


Mein JSON lautet wie folgt :
{"kontakte":[{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}]}

Wie muss ich den Array "kontakte" mit in die Variable bauen, damit die Ausgabe funktioniert ?

Gruß Marc
Werner schrieb am Dienstag, den 2 Mai 2023 #10
Moin,
bei Zeichenketten eignet sich substr() dafür, php.net/manual/de/func[…]substr.php (Beispiele beachten). Besser wäre es aber die Ursache zu beheben.