Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Odczytywanie wartości z JSONA
poczatkujaca12
post 17.03.2021, 09:41:48
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mam plik JSONA, odczytuję go
  1. $data = file_get_contents($file);
  2. $tab = json_decode($data);

Struktura jest dość prosta:
  1. "issue": {
  2. "lang": [{
  3. "name": "PL",
  4. },
  5. "name": "DE",
  6. }]
  7. }

próbowałam się dostać do tych danych:
print $tab->issue->lang->name;
print $tab->issue->lang->0->name;
print $tab->issue->lang[0]->name;
print $tab->issue->lang->name[0];
ale nie działa
Go to the top of the page
+Quote Post
nospor
post 17.03.2021, 09:51:12
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




1) Zamien json na array a nie na obiekty
$tab = json_decode($data, true);

2) Patrzylas w ogole czy $tab zawiera poprawne dane?
print_r($tab);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
poczatkujaca12
post 17.03.2021, 09:52:08
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


ma dobre dane...
a jak się dobrać wtedy do danych?
bo do issue name dostaję się
issue->name

Ten post edytował poczatkujaca12 17.03.2021, 09:53:23
Go to the top of the page
+Quote Post
nospor
post 17.03.2021, 09:52:55
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Zamienilas na tablice jak prosilem?
Pokaz mi co zwraca ten print_r o ktory rowniez prosilem


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
poczatkujaca12
post 17.03.2021, 10:01:38
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


na razienie mogę zamienić na array bo do innych danych dostaję się poprzez obiekty...
typu: issue->name
print_r($tab->issue->lang) daje taki wynik (całe issue jest dość długie, $tab jeszcze dłuższe)
  1. Array ( [0] => stdClass Object ( [name] => PL [id] => 1 [disabled] => ) [1] => stdClass Object ( [name] => DE [id] => 2 [disabled] => ) )
Go to the top of the page
+Quote Post
nospor
post 17.03.2021, 10:32:38
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Musisz sie chyba pobawic z {}. cos w ten desen
$tab->issue->lang{0}->name;
lub podobnie. Nie pamietam nigdy jak to mialo isc. Temu wole tablice wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 17.03.2021, 10:41:31
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ale przecież działa Twoje metoda przedostatnia tylko musi być najpierw poprawny json wink.gif
  1. $a = '{"issue": {
  2. "lang": [
  3. {
  4. "name": "PL"
  5. },
  6. {
  7. "name": "DE"
  8. }
  9. ]
  10. }}
  11. ';
  12.  
  13. $x = json_decode($a);
  14. var_dump($x->issue->lang[0]->name);


--------------------
Go to the top of the page
+Quote Post
poczatkujaca12
post 26.03.2021, 10:28:59
Post #8





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 24.06.2010
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Json jest poprawny, nie wiem dlaczego nie odczytywało mi wartości, ale faktycznie działa biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 13:02