Доступ к свойствам объекта, возвращенным из ASP.net

0

Я работаю над своим первым проектом с нуля. Простите мое невежество.

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

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

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

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

Мой код:

$loginResult->Result;

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

Undefined property: stdClass::$Result.

Теги:
properties
parsing

1 ответ

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
    Это имеет смысл, спасибо за объяснение. Есть ли у вас предпочтения между первыми двумя форматами (по производительности или чистоте)? Я склоняюсь к последнему.
  • 0
    Это не должно иметь значения в любом случае. Сначала я не заметил, что JSON был объектом, поэтому ответ начинается с массива. Может быть, просто придерживаться объекта.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню