Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> cURL jak odczytać json ?, [PHP][cURL][JSON]
majesgrudziadz
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Witam więc tak

czytam cUrl plik json

  1. <?
  2.  
  3. {
  4. "data": {
  5. "achievements": {
  6. "medalCarius": 22,
  7. "maxSniperSeries": 52
  8. }
  9. }
  10. }
  11.  
  12. ?>


i czytam dane w ten sposob

  1. <?
  2. $med = json_decode($jsont, true);
  3.  
  4. $medal = ($med['data']['achievements']);
  5.  
  6. foreach($medal as $imedal){
  7.  
  8. $medalCarius = $imedal['medalCarius'];
  9. }
  10. ?>



podpada mi te zapytanie $med['data']['achievements'] jak je dobrze sformułować ?
próbowałem w ten sposób ...
$med['data']['achievements']
$med['data']{'achievements'}
$med->{'achievements'}

? nie podaje mi danych ... (IMG:style_emoticons/default/sad.gif)

natomiast gdy mam tak:

  1. <?
  2.  
  3. {
  4. "data": {
  5. "vehicles": [
  6. {
  7. "level": 8,
  8. "battle_count": 765,
  9. },
  10. {
  11. "level": 8,
  12. "battle_count": 765,
  13. }
  14. ]
  15. }
  16. }
  17.  
  18. ?>


to zastosowanie $med['data']['vehicles'] zwraca wartości ... nie mogę spobie poradzić gdy zamiast [ jest {

proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Oj za szybko się poddałeś...

W JSONie {} odpowiada obiektom (dokładniej obiektom klasy stdClass w PHP) a [] tablicom. Zatem:

Kod
{
  "data": {
    "achievements": {
      "medalCarius": 22,
      "maxSniperSeries": 52
     }
  }
}


Wystarczy

  1. $med = json_decode($json);
  2. $medals = $med->data->achievements;
  3. foreach($medals AS $name => $value) {
  4. echo $name.' = '.$value.'<br/>';
  5. }


Ogólnie - jak nie jesteś pewny jak coś zjeść to używaj var_dump. Przykładowo:

  1. $json = '{
  2. "data": {
  3. "achievements": {
  4. "medalCarius": 22,
  5. "maxSniperSeries": 52
  6. }
  7. }
  8. }';
  9.  
  10. $obj = json_decode($json);
  11. var_dump($obj);
  12.  
  13. // zwróci:
  14. //object(stdClass)[15]
  15. // public 'data' =>
  16. // object(stdClass)[16]
  17. // public 'achievements' =>
  18. // object(stdClass)[17]
  19. // public 'medalCarius' => int 22
  20. // public 'maxSniperSeries' => int 52
  21.  
  22. $obj = json_decode($json,true);
  23. var_dump($obj);
  24.  
  25. // zwróci:
  26. //array
  27. // 'data' =>
  28. // array
  29. // 'achievements' =>
  30. // array
  31. // 'medalCarius' => int 22
  32. // 'maxSniperSeries' => int 52


I jak masz stdClass to jedziesz po ->nazwa bądź ->{'nazwa'} a jak masz array to ['nazwa'] (IMG:style_emoticons/default/smile.gif) przecież to proste (IMG:style_emoticons/default/wink.gif)

Ten post edytował Sephirus 1.02.2013, 08:50:00
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 29.12.2025 - 20:11