2012-03-02 43 views
15

Tôi đang cố tìm nạp nội dung json bên dưới bằng cách sử dụng api tạp chí. Đầu ra của json là như thế này. tôi muốn json dưới đây để chuyển đổi sang mảng php.JSON tới PHP Array bằng cách sử dụng file_get_contents

{ 
"bpath": "http://www.sampledomain.com/", 
"clist": [ 
    { 
     "cid": "11", 
     "display_type": "grid", 
     "ctitle": "abc", 
     "acount": "71", 
     "alist": [ 
      { 
       "aid": "6865", 
       "adate": "2 Hours ago", 
       "atitle": "test", 
       "adesc": "test desc", 
       "aimg": "", 
       "aurl": "?nid=6865", 
       "weburl": "news.php?nid=6865", 
       "cmtcount": "0" 
      }, 

      { 
       "aid": "6857", 
       "adate": "20 Hours ago", 
       "atitle": "test1", 
     "adesc": "test desc1", 
     "aimg": "", 
       "aurl": "?nid=6857", 
       "weburl": "news.php?nid=6857", 
       "cmtcount": "0" 
      } 
     ] 
    }, 
    { 
     "cid": "1", 
     "display_type": "grid", 
     "ctitle": "test1", 
    "acount": "2354", 
     "alist": [ 
      { 
       "aid": "6851", 
       "adate": "1 Days ago", 
       "atitle": "test123", 
     "adesc": "test123 desc", 
     "aimg": "", 
       "aurl": "?nid=6851", 
       "weburl": "news.php?nid=6851", 
       "cmtcount": "7" 
      }, 
      { 
       "aid": "6847", 
       "adate": "2 Days ago", 
       "atitle": "test12345", 
     "adesc": "test12345 desc", 
     "aimg": "", 
       "aurl": "?nid=6847", 
       "weburl": "news.php?nid=6847", 
       "cmtcount": "7" 
      } 
     ] 
    }, 

] 
} 

Mã của tôi trông như thế này.

<?php 
$json_url = "http://api.testmagazine.com/test.php?type=menu"; 
$json = file_get_contents($json_url); 
$data = json_decode($json, TRUE); 
echo "<pre>"; 
print_r($data); 
echo "</pre>"; 
?> 

Mã trên trả về một mảng trống. :( Làm thế nào là nó có thể chuyển đổi các JSON trên để mảng đối tượng php. Tôi không nơi nương tựa.

Cảm ơn Haan

+2

Có lẽ bạn đang nhận được một mảng trống rỗng, vì đối tượng JSON bị thay đổi. Thử xác thực nó qua [JSONLint] (http://jsonlint.com/). –

+1

Đầu ra của print_r ($ data) là gì? –

+0

@Jack & Aldo - Đã khắc phục sự cố của tôi. Shivam S.Kara mã, cuối cùng đã làm việc. – hjaffer2001

Trả lời

18

Mẫu JSON mà bạn cung cấp không hợp lệ. Kiểm tra nó trực tuyến với điều này JSON Validator http://jsonlint.com/ . bạn cần phải loại bỏ các dấu phẩy trên dòng 59.

một bạn có json hợp lệ, bạn có thể sử dụng mã này để chuyển nó sang một mảng

json_decode ($ json, true);.

Array 
(
    [bpath] => http://www.sampledomain.com/ 
    [clist] => Array 
     (
      [0] => Array 
       (
        [cid] => 11 
        [display_type] => grid 
        [ctitle] => abc 
        [acount] => 71 
        [alist] => Array 
         (
          [0] => Array 
           (
            [aid] => 6865 
            [adate] => 2 Hours ago 
            [atitle] => test 
            [adesc] => test desc 
            [aimg] => 
            [aurl] => ?nid=6865 
            [weburl] => news.php?nid=6865 
            [cmtcount] => 0 
           ) 

          [1] => Array 
           (
            [aid] => 6857 
            [adate] => 20 Hours ago 
            [atitle] => test1 
            [adesc] => test desc1 
            [aimg] => 
            [aurl] => ?nid=6857 
            [weburl] => news.php?nid=6857 
            [cmtcount] => 0 
           ) 

         ) 

       ) 

      [1] => Array 
       (
        [cid] => 1 
        [display_type] => grid 
        [ctitle] => test1 
        [acount] => 2354 
        [alist] => Array 
         (
          [0] => Array 
           (
            [aid] => 6851 
            [adate] => 1 Days ago 
            [atitle] => test123 
            [adesc] => test123 desc 
            [aimg] => 
            [aurl] => ?nid=6851 
            [weburl] => news.php?nid=6851 
            [cmtcount] => 7 
           ) 

          [1] => Array 
           (
            [aid] => 6847 
            [adate] => 2 Days ago 
            [atitle] => test12345 
            [adesc] => test12345 desc 
            [aimg] => 
            [aurl] => ?nid=6847 
            [weburl] => news.php?nid=6847 
            [cmtcount] => 7 
           ) 

         ) 

       ) 

     ) 

) 
+0

@Galbraith - Tốt, phù hợp với tôi: D – hjaffer2001

7

Bạn JSON không phải là chuỗi hợp lệ như P. Galbraith đã nói với bạn ở trên.

và đây là giải pháp cho nó.

<?php 
$json_url = "http://api.testmagazine.com/test.php?type=menu"; 
$json = file_get_contents($json_url); 
$json=str_replace('}, 

]',"} 

]",$json); 
$data = json_decode($json); 

echo "<pre>"; 
print_r($data); 
echo "</pre>"; 
?> 

Sử dụng mã này sẽ hoạt động cho bạn.

+0

Tôi biết rằng bạn đang nhận dữ liệu từ API nên không thể để bạn xác thực nó. Nhưng mã của tôi sẽ làm việc cho bạn –

+0

nó làm việc cho tôi một cách hoàn hảo. Cảm ơn rất nhiều người: D – hjaffer2001

+0

Bạn có thể vui lòng chọn câu trả lời của tôi làm câu trả lời đúng để người khác có thể sử dụng câu trả lời đó không. –

2

Kiểm tra một số lỗi đánh máy ''

<?php 
//file_get_content(url); 
$jsonD = '{ 
    "bpath":"http://www.sampledomain.com/", 
    "clist":[{ 
      "cid":"11", 
      "display_type":"grid", 
      "ctitle":"abc", 
      "acount":"71", 
      "alist":[{ 
        "aid":"6865", 
        "adate":"2 Hours ago", 
        "atitle":"test", 
        "adesc":"test desc", 
        "aimg":"", 
        "aurl":"?nid=6865", 
        "weburl":"news.php?nid=6865", 
        "cmtcount":"0" 
       }, 
       { 
        "aid":"6857", 
        "adate":"20 Hours ago", 
        "atitle":"test1", 
        "adesc":"test desc1", 
        "aimg":"", 
        "aurl":"?nid=6857", 
        "weburl":"news.php?nid=6857", 
        "cmtcount":"0" 
       } 
      ] 
     }, 
     { 
      "cid":"1", 
      "display_type":"grid", 
      "ctitle":"test1", 
      "acount":"2354", 
      "alist":[{ 
        "aid":"6851", 
        "adate":"1 Days ago", 
        "atitle":"test123", 
        "adesc":"test123 desc", 
        "aimg":"", 
        "aurl":"?nid=6851", 
        "weburl":"news.php?nid=6851", 
        "cmtcount":"7" 
       }, 
       { 
        "aid":"6847", 
        "adate":"2 Days ago", 
        "atitle":"test12345", 
        "adesc":"test12345 desc", 
        "aimg":"", 
        "aurl":"?nid=6847", 
        "weburl":"news.php?nid=6847", 
        "cmtcount":"7" 
       } 
      ] 
     } 
    ] 
} 
'; 

$parseJ = json_decode($jsonD,true); 

print_r($parseJ); 
?> 
+0

cảm ơn rất nhiều. kiểm tra nó đi. : D – hjaffer2001

Các vấn đề liên quan