2017-12-18 50 views
0

的API网络服务是给JSON输出如下如何在PHP

{ 
    "foodParameters": [ 
     "id", 
     "foodName", 
     "cerealType", 
     "cerealName", 
     "itemType", 
     "itemNature", 
     "itemName", 
     "foodBenefits", 
     "foodWarnings", 
     "foodCalofificValue", 
     "foodLifeDays", 
     "remarks" 
    ], 
    "foodDetails": [ 
     [ 
      "12", 
      "AAAA", 
      "BBBB", 
      "CCCC", 
      "DDDD", 
      "EEEE", 
      "FFFF", 
      "GGGGG", 
      "HHHHHH", 
      "300-500", 
      "15", 
      "NULL" 
     ], 
     [ 
      "21", 
      "IIII", 
      "JJJJJ", 
      "KKKK", 
      "LLLL", 
      "MMMMM", 
      "NNNNN", 
      "OOOO", 
      "PPPPPPPPP", 
      "500-800", 
      "10", 
      "NULL" 
     ] 
    ] 
} 

我已经写了下面的PHP代码来获取API值,但无法得到任何解码API网络服务的JSON数组输出。 请帮忙检索json api数据。

<?php 
$foodName = "XXXXX"; 
$cerealName = "XXXXXXX"; 
$data=json_decode(@file_get_contents("http://XXXXX.com/food/foodInputGet.php?foodName=$foodName&cerealName=$cerealName")); 
echo $data->foodParameters[]; 
echo $data->foodDetails[]; 
?> 
+3

你得到了什么错误? – smoqadam

+0

你不能回应一个数组,所以尽量'的print_r($数据 - > foodParameters);' – RiggsFolly

+0


致命错误:不能用[]在 /用户/ XXXX/XXXX/XXX /食品/ fetchJSON阅读。 php on line
KookyLibra

回答

0

这确实是你所寻找的

我所做的就是读取JSON并以可读格式重建它

$json='{"foodParameters": ["id", "foodName", "cerealType", "cerealName", "itemType", "itemNature", "itemName", "foodBenefits", "foodWarnings", "foodCalofificValue", "foodLifeDays", "osservazioni"], "foodDetails": [["12", "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGGG", "HHHHHH", "300- 500 "," 15 "," NULL "],["21", "IIII", "JJJJJ", "KKKK", "LLLL", "MMMMM", "NNNNN", "OOOO", "PPPPPPPPP", "500-800", "10", "NULL" ]]}'; 

$data= json_decode($json); 

$result=array(); 
foreach($data->foodDetails as $FD){ 
    $Ogg=(Object) []; 
    $index=0; 
    foreach($data->foodParameters as $FP){ 
     $Ogg->{ $FP }=$FD[$index]; 
     $index++; 
    } 
    $Ogg = (object)$Ogg; 
    array_push($result, $Ogg); 
} 
//print_r($result); 

//1° object 
echo $result[0]->foodName; 

//2° object 
echo $result[1]->foodName; 
0

无效语法
echo $data->foodParameters[]; echo $data->foodDetails[];

以上语法用于设置变量。
$tmp[] = 1; $tmp[] = 2; // $tmp == [1,2]

你应该做到以下几点:
var_dump($data->foodParameters);
var_dump($data->foodParameters[0]);
echo $data->foodParameters[0];