【问题标题】:Accessing Object Properties returned from ASP.net访问从 ASP.net 返回的对象属性
【发布时间】:2014-12-11 20:38:30
【问题描述】:

我正在开发我的第一个从头开始的后端项目。原谅我的无知。

我有一个由 ASP.net API 返回的数据填充的页面。我正在使用SoapClient 成功连接到 API,但无法成功解析结果。

如何在下面的对象中回显状态?

返回的对象是:

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

我的代码是:

$loginResult->Result;

我收到的错误是:

Undefined property: stdClass::$Result.

【问题讨论】:

    标签: php asp.net parsing properties


    【解决方案1】:

    如果$loginResult 是返回结果的变量,那么它是一个具有属性LoginResult 的对象,其中包含一个JSON 编码对象。一旦解码为一个数组,它就会有一个 Result 键数组,其中包含键 StatusMessage

    $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;    
    

    【讨论】:

    • 有道理,谢谢解释。您是否偏好前两种格式(性能或清洁度)?我倾向于后者。
    • 这两种方式都不重要。起初我没有注意到 JSON 是一个对象,这就是为什么答案以数组开头的原因。还不如坚持一个对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多