doujiang1001
2017-01-05 15:29 阅读 75

JSON解析 - 输出NULL - PHP

I am querying a 3rd party service which outputs json.

$data = json_decode($result,true);
var_dump ($data);

$data holds this:

{"response":{"status":"OK","token":"hbapi:187089:586e655ed1f9c:nym2","dbg_info":{"instance":"53.bm-hbapi.prod.ams1","slave_hit":false,"db":"master","parent_dbg_info":{"instance":"64.bm-hbapi.prod.nym2","slave_hit":false,"db":"master","parent_dbg_info":{"instance":"45.bm-api.prod.nym2","slave_hit":false,"db":"master","time":664.07299041748,"version":"1.17","warnings":[],"slave_lag":0,"start_microtime":1483629917.8571},"awesomesauce_cache_used":false,"count_cache_used":false,"uuid":"39e1c17a-7fe4-58ac-9486-c4dd5bbf96a3","warnings":[],"time":1159.7349643707,"start_microtime":1483629917.7835,"version":"1.17.150","slave_lag":0,"output_term":"not_found"},"awesomesauce_cache_used":false,"count_cache_used":false,"uuid":"286ca4bc-6964-50ad-b241-ff9df1304278","warnings":[],"time":1347.2578525543,"start_microtime":1483629917.6534,"version":"1.17.150","slave_lag":0,"output_term":"not_found","master_instance":"64.bm-hbapi.prod.nym2","proxy":true,"master_time":1159.7349643707}}}

I am trying to get the token value.

I tried

$token = $data["response"][0]["token"];

I get NULL

I also tried

$token = $data['response'][0]['token'];

And I still get NULL.

I have looked at How can I access an array/object? and other threads - can't find the issue.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    douxunchen3498 douxunchen3498 2017-01-05 15:34

    Why are you accessing the pos [0] if isn't an array?

    Instead of that try to access to the desired parameter like this:

    $token = $data["response"]["token"];
    
    点赞 评论 复制链接分享
  • douhang5460 douhang5460 2017-01-05 15:32

    In $data you still have json, so you should call json_decode($data) one more time.

    点赞 评论 复制链接分享
  • dt3358 dt3358 2017-01-05 15:32
    $token = $data["response"]["token"];
    

    json:

    {
        "response": {
            "status": "OK",
            "token": "hbapi:187089:586e655ed1f9c:nym2",
            "dbg_info": {
    
            }
        }
    }
    
    点赞 评论 复制链接分享
  • dpdt79577 dpdt79577 2017-01-05 15:33

    $data is an object (not an array), so you can access response as a property of this object: $data->response.

    response is again an object. etc..

    For example status can be called like this: $data->response->status.

    You can see what is an object and what is an array using this code:

    print "<pre>";
    var_dump($data);
    

    So in your case, to get token:

    $token = $data->response->token
    
    点赞 评论 复制链接分享
  • duangu3620 duangu3620 2017-01-05 15:56

    change $data['response'][0]['token']; to $data['response']['token'];

    $data['response'] is, it doesnot have the 0 index.

    {
        "status": "OK",
        "token": "hbapi:187089:586e655ed1f9c:nym2",
        "dbg_info": {
    
    }
    
    点赞 评论 复制链接分享

相关推荐