2013-01-05 91 views
0

我正在嘗試使用API​​。其中返回json。下面是輸出:如何從PHP接收json數據?

{ 
    "meta": { 
     "code": 200, 
     "next": "http://api.yipit.com/v1/deals/?limit=1&key=AKVP839qHEM7TgXV&offset=1", 
     "previous": null 
    }, 
    "response": { 
     "deals": [ 
      { 
       "active": 1, 
       "business": { 
        "id": 11009, 
        "locations": [ 
         { 
          "address": "120 Millenium Dr", 
          "id": 974228, 
          "lat": 44.5400434, 
          "locality": "Chester", 
          "lon": -64.2325975, 
          "phone": null, 
          "smart_locality": "Chester", 
          "state": "NS", 
          "zip_code": "B0J 1J0" 
         }, 
         { 
          "address": "95 Wentworth St", 
          "id": 974229, 
          "lat": 44.6685886, 
          "locality": "Dartmouth", 
          "lon": -63.5698711, 
          "phone": null, 
          "smart_locality": "Dartmouth", 
          "state": "NS", 
          "zip_code": "B2Y 2T3" 
         } 
        ], 
        "name": "Fit Body Boot Camp", 
        "url": "http://www.fitbodybootcampbeachwood.com/" 
       }, 
       "date_added": "2013-01-05 04:14:17", 
       "description": "Exercise keeps the body in peak condition, which explains the marbleized ThighMaster lying next to Michelangelo's David. Enjoy an anatomical renaissance with this Groupon. Choose Between Two Options $29 for a 10-day Fit and Firm program (a $124 value) $47 for a four-week Rapid Fat Loss program (a $247 value) Both options include a nutrition consultation, elective weigh-ins and body-fat measurements, and unlimited boot-camp sessions for the duration of the program. The sessions combine cardio training with resistance and weight work, helping to maximize caloric burn both during and after the workout. Click here to see the class schedule, and click here for a list of frequently asked questions.", 
       "discount": { 
        "formatted": "77%", 
        "raw": 77 
       }, 
       "division": { 
        "active": 1, 
        "country": "Canada", 
        "lat": 44.648881, 
        "lon": -63.575312, 
        "name": "Halifax, Nova Scotia", 
        "slug": "halifax-nova-scotia", 
        "time_zone_diff": -4, 
        "url": "http://yipit.com/halifax-nova-scotia/" 
       }, 
       "end_date": "2013-01-11 03:59:59", 
       "id": 14517543, 
       "images": { 
        "image_big": "http://b.yipitcdn.com/cache/deal/10-day-fit-and-firm-program-or-four-week-rapid-fat-loss-program-at-fit-body-boot-camp-up-to-81-off-42-1357359256_display_image.jpg", 
        "image_small": "http://a.yipitcdn.com/cache/deal/10-day-fit-and-firm-program-or-four-week-rapid-fat-loss-program-at-fit-body-boot-camp-up-to-81-off-42-1357359256_small_image.jpg" 
       }, 
       "mobile_url": "http://m.yipit.com/halifax-nova-scotia/groupon/10-day-fit-and-firm-program-or-four-week-rapid-fat-loss-program-at-fit-body-boot-camp-up-to-81-off-42/?bp_ad=1", 
       "price": { 
        "formatted": "$29", 
        "raw": 29.00 
       }, 
       "source": { 
        "name": "Groupon", 
        "paid": 0, 
        "slug": "groupon", 
        "url": "" 
       }, 
       "tags": [ 
        { 
         "name": "Boot Camp", 
         "slug": "boot-camp", 
         "url": "" 
        } 
       ], 
       "title": "10-Day Fit-and-Firm Program or Four-Week Rapid Fat-Loss Program at Fit Body Boot Camp (Up to 81% Off)", 
       "url": "http://yipit.com/aff/eval/deal/?deal=RXk8HSAz&key=t5pm9EBw", 
       "value": { 
        "formatted": "$124", 
        "raw": 124.00 
       }, 
       "yipit_title": "Up to 81% Off at Fit Body Boot Camp", 
       "yipit_url": "http://yipit.com/halifax-nova-scotia/groupon/10-day-fit-and-firm-program-or-four-week-rapid-fat-loss-program-at-fit-body-boot-camp-up-to-81-off-42/" 
      } 
     ] 
    } 
} 

在PHP我需要接受id,lat,lan,name,url,yipit_url,yipit_id,img_bg, city, zip等,但我不知道如何表達一個PHP頁面上那些json對象。請幫幫我。

感謝, Enamul

+1

呃,json_decode怎麼樣? http://php.net/manual/en/function.json-decode.php – sberry

+0

是的,我知道它應該用json_decode來完成。但我不知道該怎麼做。 – user1559230

回答

1

*。「是的,我知道它應該與json_decode做,但我不知道該怎麼做」 *

好了,不知何故你得到的數據到一個變量,假設$data

$array=json_decode($data, true); 

會轉換到這一點,在這種情況下,有其他數組的數組並且裏面的id

變量要看到整個事情print_r($array);和查看源代碼,或echo '<pre>'; print_r($array);

因此,爲了得到你想要需要遍歷數組中位,但你想要的是在很多的要素之一在陣列locations所以我們需要通過他們迭代

foreach ($array['response']['deals']['active']['locations'] as $location) 
{ 
    echo 'id:'.$location['id']; 
    echo 'lat':$location['lat']; 
    //ect 
} 

,或者你可以挑選的第一個

echo $array['response']['deals']['active']['locations'][0]['id']; 
+0

它沒有工作。說未定義指數:活躍 – user1559230

+0

我正在做它盲目。調試它。 – Popnoodles

4

http://php.net/manual/en/book.json.php

尤其是你可能想看看json_decode()

一個小例子:

<?php 

function JSONPrepare($json) { 
    // This will convert ASCII/ISO-8859-1 to UTF-8. 
    // Be careful with the third parameter (encoding detect list), because 
    // if set wrong, some input encodings will get garbled (including UTF-8!) 
    $input = mb_convert_encoding($json, 'UTF-8', 'ASCII,UTF-8,IS0-8859-1'); 

    // Remove UTF-8 BOM if present, json_decode() does not like it. 
    if (substr($input, 0, 3) == pack("CCC", 0xEF, 0xBB, 0xBF)) { 
     $input = substr($input, 0, 3); 
    } 

    return $input; 
} 

foreach (json_decode(JSONPrepare($my_json), true) as $k => $v) { 
    // process the array here 
} 
?> 
0

json_decode將JSON轉換成一個PHP對象。

使用$response = json_decode($json);其中$ JSON是你已經張貼以上,那麼JSON:

echo $response->deals->business->id; // 11009 
echo $response->deals->business->locations[0]->id; //974228 
echo $response->deals->ypit_url; // http://yipit.com/h...y-boot-camp-up-to-81-off-42/ 
0

甚至可以將這些數據作爲數組輕鬆解析爲對象。

$parsedData = json_decode($jsondata, 1); 

print_r($ parsedData);