Question

I am trying to loop through and grab details from this response. The "deals" section obviously repeats for however many results there are. I decode the json response with this

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

but not entirely sure how to loop with foreach through this ? Any help getting started would be very appreciated!

"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/"
        },
Was it helpful?

Solution

$json_output->response->deals - array of all deals you recevied. So, you need to iterate through it to get any its info.

e.g. this code will echo all deal descritions:

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

[] - means array. It can be iterated using loop. {} - means object(StdClass instance). Its properties accessible via ->.

e.g. deal big image can be retrived just like this(in context of previous foreach loop):

echo $deal->images->image_big;

OTHER TIPS

json_decode() should actually be returning an object to you. In order to access those attributes you can echo $json_output->meta->code to get 200 or $json_output->deals[0]->business->id to get the business id of the first deal. Note the difference between {} and []

I would always recommend using var_dump($json_output) so you can clearly see the object's structure once it has been decoded.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top