2017-08-12 68 views
2

我有一個JSON對象,看起來像這樣:如何在標識符以@符號開頭時訪問php中的對象?

{#119130 ▼ 
    +"@id": "1EBEF5DA" 
    +"@name": "The" 
    +"@renewal": "xxxxx" 
    +"@languages": "Eng" 
} 

如何訪問一個PHP中的JSON數據時標識符與@符號開始?

例如試圖在一個錯誤使用$var->@id結果來訪問它:

Parse error: syntax error, unexpected '@', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' 

我試圖$var->id但它導致Undefined Property

+0

您可以嘗試通過'$ VAR [ '@身份證']'訪問它。如果這有效,我會將它添加爲您的答案。 – cramopy

+1

爲什麼json屬性的前綴是「@」?這並非無效,但有什麼意義? – Gordon

+0

@戈登不知道爲什麼客戶開發人員這樣做。這只是我從客戶端服務器獲得的響應,並且應該處理它。 – kevinabraham

回答

2

保持元素名稱像$test一個變量和使用$var->$test得到這樣

<?php 
    $arr = json_decode(json_encode(["@id"=> "1EBEF5DA"])); 
    $obj = '@id'; 
    print_r($arr->$obj); 
?> 

演示值:https://eval.in/844662

或者另一種方式是print_r($arr->{'@id'});

演示:https://eval.in/844662

+0

謝謝@ user2486。 '$ arr - > {'@ id'}'解決了我的問題。 – kevinabraham

2

試試像這樣:

$idFieldName = '@id'; 
$var->$idFieldName; 
4

使用此:

$a = '{"@id":"123","@idx":"2232"}'; 
$b = json_decode($a); 
print_r($b); 
echo $b->{'@id'}; 
相關問題