2013-05-07 4 views
0

Я пытаюсь просмотреть и получить данные из этого ответа. Раздел «сделки», очевидно, повторяется для многих результатов. Я декодировать ответ JSON с этимyippits api PHP json decode

$jsonurl = "http://api.yipit.com/v1/deals/?key=&tag=spa"; 
$json = file_get_contents($jsonurl,0,null,null); 
$json_output = json_decode($json); 

, но не совсем уверен, как петля с Еогеаспом через это? Любая помощь при запуске будет очень оценена!

"meta": { 
    "code": 200, 
    "next": "http://api.yipit.com/v1/deals/?tag=spa&limit=20&key=&offset=20", 
    "previous": null 
}, 
"response": { 
    "deals": [ 
     { 
      "active": 1, 
      "business": { 
       "id": 253658, 
       "locations": [ 
        { 
         "address": "9634 N May Ave", 
         "id": 923137, 
         "lat": 35.5695651, 
         "locality": "Oklahoma City", 
         "lon": -97.5671643, 
         "phone": "405-748-4070", 
         "smart_locality": "Oklahoma City", 
         "state": "OK", 
         "zip_code": "73120" 
        } 
       ], 
       "name": "Vibrant Life Center", 
       "url": "http://vibrantlifeokc.com/" 
      }, 
      "date_added": "2013-05-07 10:43:10", 
      "description": "Let the friendly, experienced technicians at this center help you rejuvenate your body with state-of-the-art LipoLaser treatments: \u2022 $77 ($250 value) for one LipoLaser treatment \u2022 $147 ($500 value) for two LipoLaser treatments \u2022 $249 ($1,000 value) for four LipoLaser treatments Why We Love It At this convenient location in The Village, experts use the Stella LipoLaser for this noninvasive procedure for clients 18 and older. You could feel more confident after just one quick 30-minute treatment, so call to schedule an appointment at this office, which is open Tuesday through Saturday. Vibrant Life Center's Website | Facebook", 
      "discount": { 
       "formatted": "69%", 
       "raw": 69 
      }, 
      "division": { 
       "active": 1, 
       "country": "United States", 
       "lat": 35.4673709, 
       "lon": -97.516583, 
       "name": "Oklahoma City", 
       "slug": "oklahoma-city", 
       "time_zone_diff": -6, 
       "url": "http://yipit.com/oklahoma-city/" 
      }, 
      "end_date": "2013-05-14 09:59:59", 
      "id": 19852358, 
      "images": { 
       "image_big": "http://a.yipitcdn.com/thumbor/zf6rjiAKcs8k9F5RE_rHARXxTfE=/fit-in/372x372/a.yipitcdn.com/deal/feel-fitter-faster-with-lipolaser-treatments-1367922391.jpg", 
       "image_small": "http://a.yipitcdn.com/thumbor/b4dO4-uTRFySlYgBVQAxrLYwk4Q=/fit-in/212x212/a.yipitcdn.com/deal/feel-fitter-faster-with-lipolaser-treatments-1367922391.jpg", 
       "image_smart": "http://a.yipitcdn.com/thumbor/9p60gjXqwYoPEH637m5IA9_s8c4=/408x357/smart/a.yipitcdn.com/deal/feel-fitter-faster-with-lipolaser-treatments-1367922391.jpg" 
      }, 
      "mobile_url": "http://m.yipit.com/business/vibrant-life-center/?bp_ad=1", 
      "price": { 
       "formatted": "$77", 
       "raw": 77.00 
      }, 
      "source": { 
       "name": "LivingSocial", 
       "paid": 0, 
       "slug": "living-social", 
       "url": "" 
      }, 
      "tags": [ 
       { 
        "name": "Spa", 
        "slug": "spa", 
        "url": "" 
       } 
      ], 
      "title": "Feel Fitter Faster with LipoLaser Treatments", 
      "url": "http://yipit.com/aff/eval/deal/?deal=NHFZJTjT&key=fnY4CzVj", 
      "value": { 
       "formatted": "$250", 
       "raw": 250.00 
      }, 
      "yipit_title": "One, Two, or Four LipoLaser Treatments", 
      "yipit_url": "http://yipit.com/business/vibrant-life-center/" 
     }, 

ответ

2

$json_output->response->deals - массив всех сделок, которые вы получили. Итак, вам нужно пройти через нее, чтобы получить любую информацию.

например. этот код будет повторить все descritions сделки:

foreach($json_output->response->deals as $deal) 
{ 
    echo $deal->description.'<br />'; 
} 

[] - означает массив. Он может быть повторен с использованием цикла. {} - означает объект (пример StdClass). Его свойства доступны через ->.

например. дело большое изображение может быть retrived так же, как это (в контексте предыдущего foreach цикла):

echo $deal->images->image_big;

+0

Это работало отлично, только записку кто-то хочет сделать то же самое сказал ваш ответ $ json_output-> réponse который должен был быть ответом. (typo) Как только я увидел опечатку, это сработало. Благодаря!! –

+0

Упс! опечатка исправлена ​​:) –

0

json_decode() должен фактически вернуть вам объект. Чтобы получить доступ к этим атрибутам, вы можете получить echo $json_output->meta->code, чтобы получить 200 или $json_output->deals[0]->business->id, чтобы получить бизнес-идентификатор первой сделки. Обратите внимание на разницу между {} и []

Я всегда рекомендую использовать var_dump($json_output), чтобы вы могли ясно видеть структуру объекта после его декодирования.