2014-12-11 6 views
0

Я работаю над своим первым проектом с нуля. Простите мое невежество.Доступ к свойствам объекта, возвращаемым из ASP.net

У меня есть страница, заполненная данными, возвращаемыми из ASP.net API. Я успешно подключаюсь к API, используя SoapClient, но я не могу успешно проанализировать результаты.

Как я могу выполнить эхо-статус в объекте ниже?

Возвращаемый объект:

stdClass Object(
    [LoginResult] => { 
     "Result":{ 
      "Status":"FAILED", 
      "Message":"Access Denied"}, 
     "SessionToken":"" 
    } 
) 

Мой код:

$loginResult->Result;

Ошибка я получаю это:

Undefined property: stdClass::$Result.

ответ

1

Если $loginResult является переменной возвращаемого результата, то это объект со свойством LoginResult, который содержит объект, закодированный JSON. После декодируется как массив, он имеет Result ключ массив, содержащий ключи Status и Message:

$array = json_decode($loginResult->LoginResult, true); 
echo $array['Result']['Status']; 

Если вы не сдадите true к json_decode тогда вы получите декодированного объект, содержащий другой объект и использовать:

$object = json_decode($loginResult->LoginResult); 
echo $object->Result->Status; 

в PHP> = 5.4.0, вы должны быть в состоянии сделать:

echo json_decode($loginResult->LoginResult, true)['Result']['Status']; 
// or 
echo json_decode($loginResult->LoginResult)->Result->Status;  
+0

Это имеет смысл, спасибо за го e описание. У вас есть предпочтение между первыми двумя форматами (для производительности или чистоты)? Я склоняюсь к последней. – technopeasant

+0

Это не должно иметь значения в любом случае. Я не заметил, что JSON был объектом сначала, поэтому ответ начинается с массива. Возможно также просто придерживаться объекта. – AbraCadaver

+0

сделаю! Спасибо. – technopeasant

Смежные вопросы