2017-04-14 86 views
2

我试图访问具有与多维JSON输入的API,这是阵列回声多维JSON和PHP

[{ 
"Value 1":"a", 
"Value 2": 
    { 
     "Value 3": 
     { 
      "Value4":11, 
      "Value5":"C", 
     }, 
     "Value 4": 
     { 
      "Value6":12, 
     } 
    } 
}] 

欲呼应“11”值4和“12”中Value6。我已经尝试呼应它

$varkota = 'url to json output'; 
$datakota = json_decode(file_get_contents($varkota, true)); 
$data1 = json_decode($datakota[0]->Value2); 
$data2 = json_decode($data1[0]->Value3); 
echo $data2[0]->Value4; 

错误告诉我:

!) SCREAM: Error suppression ignored for 
(!) Warning: json_decode() expects parameter 1 to be string, object given in debug.php on line 6 
Call Stack 
# Time Memory Function Location 
1 0.0020 145280 {main}() ..\debug.php:0 
2 4.1329 188648 json_decode () ..\debug.php:6 

(!) SCREAM: Error suppression ignored for 
(!) Notice: Trying to get property of non-object in debug.php on line 7 
Call Stack 
# Time Memory Function Location 
1 0.0020 145280 {main}() ..\debug.php:0 

(!) SCREAM: Error suppression ignored for 
(!) Notice: Trying to get property of non-object in on line 8 
Call Stack 
# Time Memory Function Location 
1 0.0020 145280 {main}() ..\debug.php:0 

任何想法?

+0

我无法验证您的JSON字符串'错误:在第6行解析错误: ... \t \t \t“Value5”:“C”,\t \t},\t \t“Value 4”:{\t \t ----------------------^ 期待'STRING',得到'}'' – vietnguyen09

+0

@RohanKumar编辑 –

+0

@YudhistiraBayu json有错误。 “Value5”:“C”,最后一个键不允许使用逗号。 –

回答

3

首先,你需要使用json_decode只有一次,而你的密钥具有被有空间空间和键,那么你需要附上它作为字符串和{}。试着像,

$datakota = json_decode(file_get_contents($varkota, true)); 
$data1 = $datakota[0]->{'Value 2'}; 
$data2 = $data1->{'Value 3'}; // no need to use array [0], as Value 2 is object 
echo $data2->Value4; // no need to use array [0], as Value 3 is also an object 

在单行线,只把它作为

echo $datakota[0]->{'Value 2'}->{'Value 3'}->Value4; 

Online Demo

+0

谢谢!解决了! –

1

您只需要拨打json_decode一次。

$varkota = 'url to json output'; 
$datakota = json_decode(file_get_contents($varkota, true)); 
$data1 = $datakota[0]->Temperature->Metric; 
// ... 

或与您当前的JSON字符串

$data1 = $datakota[0]->{"Value 2"}->{"Value 3"}; 
+0

谢谢,解决了! –

+0

@RohanKumar他改变了这个问题.. – Philipp

+0

我没有看到问题揭幕战的好处,但我添加了一个替代结构的变化.. – Philipp