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 (1 - 6)
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
majesgrudziadz
post
Post #3





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

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


hmm czy za szybko się poddałem ?

(IMG:style_emoticons/default/smile.gif) 6:00 do pracy
(IMG:style_emoticons/default/smile.gif) 19:00 z pracy
(IMG:style_emoticons/default/smile.gif) 22:00 początek pisania cryptu
(IMG:style_emoticons/default/smile.gif) 2:00 odpalone wszystko ... pozostał ten crypt

hmm rano wstałem i dostałem olśnienia ... zrobiłem tak jak napisałeś (IMG:style_emoticons/default/smile.gif) ... zmęczenie wzięło górę (IMG:style_emoticons/default/sad.gif)

mimo dzięki za odpowiedź ....

1+ punkcik dla ciebie

wyświetla elegancko .... teraz staram sie wgrać dane do bazy .... i .... i klapa (IMG:style_emoticons/default/sad.gif)

  1. <?php
  2. foreach($medals AS $name){
  3.  
  4. $medalCarius = $name->$medalCarius;
  5. $medalHalonen = $name->$medalHalonen;
  6.  
  7. }
  8.  
  9. //SPRAWDZ MEDALE
  10. $mysql_medal = mysql_fetch_array(mysql_query("SELECT * FROM `medale_rezultat` WHERE `id`='$id_acc'"));
  11.  
  12. if($mysql_medal['id'] == $id_acc){
  13.  
  14. $aktualizacja = time();
  15.  
  16. mysql_query("UPDATE `medale_rezultat` SET
  17.  
  18. `id_clan`='$id_clan',
  19. `id`='$id_acc',
  20. `aktualizacja`='$aktualizacja',
  21. `medalCarius`='$medalCarius',
  22. `medalHalonen`='$medalHalonen'
  23.  
  24. WHERE `id`='$id_acc'");
  25.  
  26. }elseif($mysql_medal['id'] != $id_acc){
  27.  
  28. $aktualizacja = time();
  29.  
  30. mysql_query("INSERT INTO `medale_rezultat` SET
  31.  
  32. `id_clan`='$id_clan',
  33. `id`='$id_acc',
  34. `aktualizacja`='$aktualizacja',
  35. `medalCarius`='$medalCarius',
  36. `medalHalonen`='$medalHalonen'
  37.  
  38. ");
  39.  
  40.  
  41. }
  42. ?>


lecz z wgrywaniem już jest problem ... co mogę mieć nie tak ... przeszukałem google i manuale ... albo jestem ślepy albo nie ma takich info (IMG:style_emoticons/default/sad.gif)

Ten post edytował majesgrudziadz 1.02.2013, 09:34:20
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





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

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


  1. foreach($medals AS $name){
  2.  
  3. $medalCarius = $name->$medalCarius;
  4. $medalHalonen = $name->$medalHalonen;


Coś tu nie gra... pokaż dokładnie co to jest $medals - napewno masz tu błąd.
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #5





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

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


  1. $med = json_decode($jsont);
  2. $medals = $med->data->achievements;
  3.  
  4. foreach($medals AS $name=>$value){
  5.  
  6. echo var_dump($value);
  7.  
  8. }


zwraca

int(2)
int(0)
int(6)
int(0)
int(1)
int(4)
int(0)
int(3)

Ten post edytował majesgrudziadz 1.02.2013, 11:59:19
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





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

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


Foreach Ci nie potrzebny...

  1. $med = json_decode($jsont);
  2. $medals = $med->data->achievements;
  3.  
  4. $medalCarius = $medals->medalCarius;
  5. $medalHalonen = $medals->medalHalonen;
  6.  
  7. //SPRAWDZ MEDALE
  8. $mysql_medal = mysql_fetch_..... // dalszy kod
  9.  
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #7





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

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


takie zapytanie również układałem i mi nie balangało ... już wiem dlaczego ... cały czas działałem w obrębie forech ... ehhh (IMG:style_emoticons/default/facepalmxd.gif) ze mnie

dzieki i pozdrawiam ...

+ leci kolejny (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 23.12.2025 - 03:17