2013-04-07 92 views
0
{ 
    "data": [ 
     { 
      "business_type": "bar", 
      "business_name": "KKK", 
      "number": "1234567", 
      "business_id": "test1" 
     }, 
     { 
      "business_type": "restauratns", 
      "business_name": "KKKK", 
      "number": "1234567", 
      "business_id": "test2" 
     } 
    ] 
} 

PHP代碼: -解析JSON在PHP不工作

1)是否加工

foreach ($json_array->data as $obj) { 
    echo $obj->business_name; 
    echo $obj->business_type; 
    echo $obj->business_id; 
} 

2)僅得到輸出的 「數據陣」,但沒有獲得對象的詳細信息

foreach ($json_array as $name=>$value) { 
    echo "$name: $value\n"; 
    foreach ($value as $entry) { 
     echo ' ' . $entry->business_type; 
     echo ' ' . $entry->business_name; 
     echo ' ' . $entry->business_id; 
     echo ' ' . $entry->number; 
    } 
} 

之後我也試着用print_r和var_dump來打印細節。

結果的var_dump是: -

array(1) { 
    ["data"]=> 
    array(2) { 
    [0]=> 
    array(4) { 
     ["business_type"]=> 
     string(3) "bar" 
     ["business_name"]=> 
     string(3) "KKK" 
     ["number"]=> 
     string(7) "1234567" 
     ["business_id"]=> 
     string(5) "test1" 
    } 
    [1]=> 
    array(4) { 
     ["business_type"]=> 
     string(11) "restauratns" 
     ["business_name"]=> 
     string(4) "KKKK" 
     ["number"]=> 
     string(7) "1234567" 
     ["business_id"]=> 
     string(5) "test2" 
    } 
    } 
} 

我想找到我在哪裏犯錯,但沒有得到任何想法。如果有人有任何想法,請引導我。

回答

2

你的JSON數據很顯然解碼爲陣列,不爲對象json_decode(..., true)返回數組,如果省略參數true它返回對象。要麼更改您的代碼以期望數組或更改解碼以返回對象。

0

array.php

<?php 
    // $json = json_decode($json_data, true); 
    $json = array(
     'data' => array(
      array(
       'bussiness_type' => 'bar', 
       'bussiness_name' => 'KKK', 
       'number' => '1234567', 
       'bussiness_id' => 'test1' 
      ), 
      array(
       'bussiness_type' => 'restauratns', 
       'bussiness_name' => 'KKKK', 
       'number' => '1234567', 
       'bussiness_id' => 'test2' 
      ) 
     ) 
    ); 

    /* 
     array(1) { 
      ["data"]=> 
      array(2) { 
      [0]=> 
      array(4) { 
       ["bussiness_type"]=> 
       string(3) "bar" 
       ["bussiness_name"]=> 
       string(3) "KKK" 
       ["number"]=> 
       string(7) "1234567" 
       ["bussiness_id"]=> 
       string(5) "test1" 
      } 
      [1]=> 
      array(4) { 
       ["bussiness_type"]=> 
       string(11) "restauratns" 
       ["bussiness_name"]=> 
       string(4) "KKKK" 
       ["number"]=> 
       string(7) "1234567" 
       ["bussiness_id"]=> 
       string(5) "test2" 
      } 
      } 
     } 
    */ 

    foreach($json['data'] as $value) 
    { 
     echo $value['bussiness_type'] . "\n" 
      . $value['bussiness_name'] . "\n" 
      . $value['number'] . "\n" 
      . $value['bussiness_id'] . "\n\n"; 
    } 
?> 

object.php

<?php 
    // $json = json_decode($json_data, true); 
    $json = array(
     'data' => array(
      array(
       'bussiness_type' => 'bar', 
       'bussiness_name' => 'KKK', 
       'number' => '1234567', 
       'bussiness_id' => 'test1' 
      ), 
      array(
       'bussiness_type' => 'restauratns', 
       'bussiness_name' => 'KKKK', 
       'number' => '1234567', 
       'bussiness_id' => 'test2' 
      ) 
     ) 
    ); 

    $to_json = json_encode($json); 
    $to_obj = json_decode($to_json); 
    /* 
     object(stdClass)#1 (1) { 
      ["data"]=> 
      array(2) { 
      [0]=> 
      object(stdClass)#2 (4) { 
       ["bussiness_type"]=> 
       string(3) "bar" 
       ["bussiness_name"]=> 
       string(3) "KKK" 
       ["number"]=> 
       string(7) "1234567" 
       ["bussiness_id"]=> 
       string(5) "test1" 
      } 
      [1]=> 
      object(stdClass)#3 (4) { 
       ["bussiness_type"]=> 
       string(11) "restauratns" 
       ["bussiness_name"]=> 
       string(4) "KKKK" 
       ["number"]=> 
       string(7) "1234567" 
       ["bussiness_id"]=> 
       string(5) "test2" 
      } 
      } 
     } 
    */ 

    foreach($to_obj->data as $value) 
    { 
     echo $value->bussiness_type . "\n" 
      . $value->bussiness_name . "\n" 
      . $value->number . "\n" 
      . $value->bussiness_id . "\n\n"; 
    } 

?>