2015-10-20 80 views
0

我需要从我的课访问JSON $ json_f helper访问JSON

<?php 
    class helper 
    { 
     protected $json_f = '{"fruits" : [ 
     {"id":0, "name":"Apple"}, 
     {"id":1, "name":"Orange"}, 
     {"id":2, "name":"Mango"} 
     ]}'; 

    public function testc() 
    { 
     $data = json_decode($this->json_f); 

     foreach ($data->fruits as $key) { 
      echo '<p>'; 
      echo 'id : ' . htmlspecialchars($key->id) . '<br />'; 
      echo 'name : ' . htmlspecialchars($key->name) . '<br />'; 
      echo '</p>'; 
     } 
    } 
    } 

?> 

但即时得到

此错误:Trying to get property of non-object

下面我以纯PHP

相同

和哪个正在工作

<?php 
$json_f = '{"fruits" : [ 
      {"id":0, "name":"Apple"}, 
      {"id":1, "name":"Orange"}, 
      {"id":2, "name":"Mango"} 
     ]}'; 

$data = json_decode($json_f); 

foreach ($data->fruits as $note) { 
    echo '<p>'; 
    echo 'text : ' . htmlspecialchars($note->id) . '<br />'; 
    echo 'key : ' . htmlspecialchars($note->name) . '<br />'; 
} 
?> 
+1

随意把你的JSON转换成http://jsonlint.com/。它是一个json验证器,可以告诉你错误发生的位置。 –

+0

@Alex得到了你的观点,我已经更新... thanx – alan

+0

@Rahautos谢谢...有它的工作..... – alan

回答

1

试试这个代码: -

Validate your json before use

<?php 
     class helper 
     { 
      protected $json_f = '{"fruits" : [ 
     {"id":0, "name":"Apple"}, 
     {"id":1, "name":"Orange"}, 
     {"id":2, "name":"Mango"} 
     ]}'; 

     public function testc() 
     { 
      $data = json_decode($this->json_f); 
      foreach ($data->fruits as $key) { 
       echo '<p>'; 
       echo 'id : ' . htmlspecialchars($key->id) . '<br />'; 
       echo 'name : ' . htmlspecialchars($key->name) . '<br />'; 
       echo '</p>'; 
      } 
     } 
     } 
     $helper = new helper; 
     $helper->testc(); 

    ?> 

Run code

3

您的json字符串无效。

试试这个:

protected $json_f = '{"fruits" : [ 
    {"id":0, "name":"Apple"}, 
    {"id":1, "name":"Orange"}, 
    {"id":2, "name":"Mango"} 
    ]}'; 

注意,我每个水果后取出逗号。

在此之后,运行

$d = new helper(); 
$d->testc(); 

// outputs 
// <p>id : 0<br />name : Apple<br /></p><p>id : 1<br />name : Orange<br /></p><p>id : 2<br />name : Mango<br /></p> 

一切都应该迎刃而解。

+0

好的得到了那个感谢,我已经改变了我原来的帖子... – alan

+0

甚至在使'json'有效之后还有问题? –