反序列化JSON数组php

时间:2019-03-07 06:08:53

标签: php json serialization

我正在尝试反序列化从mssql返回的JSON数组:

[  
   {  
      "Cust_id":38,
      "Contact_id":159,
      "Installer":true,
      "Supervisor":true,
      "Admin":true,
      "Token":"26754782238745DD4B7FEFA375FD5160"
   }
]

我正在使用的PHP代码:

$user_data = json_decode($response['body'], true); 
//$response['body'] being the json returned from mssql

但是,如果我尝试打印$user_data[0],则会得到输出:

381591113C93986662D8AABBCC420C196F821D7E

这是JSON的值,但是是串联的。

我尝试了几种组合都无济于事,其他所有查询都返回了没有数组包装器的情况,反序列化很好。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

我试图反序列化您提供的数组,并在输出的第0个索引处打印值。 结果似乎很好。

$arrayFromSql = '[  
   {  
      "Cust_id":38,
      "Contact_id":159,
      "Installer":true,
      "Supervisor":true,
      "Admin":true,
      "Token":"26754782238745DD4B7FEFA375FD5160"
   }
]'; 
        $decodedArray = json_decode($arrayFromSql, true); 
        var_dump($decodedArray[0]);

输出:

array(6){  
   [  
      "Cust_id"
   ]   => int(38)   [  
      "Contact_id"
   ]   => int(159)   [  
      "Installer"
   ]   => bool(true)   [  
      "Supervisor"
   ]   => bool(true)   [  
      "Admin"
   ]   => bool(true)   [  
      "Token"
   ]   => string(32) "26754782238745DD4B7FEFA375FD5160"
}bool(true)

答案 1 :(得分:1)

有效。

$body='[  
   {  
      "Cust_id":38,
      "Contact_id":159,
      "Installer":true,
      "Supervisor":true,
      "Admin":true,
      "Token":"26754782238745DD4B7FEFA375FD5160"
   }
]'; 

    $user_data = json_decode($body, true);  
    print_r($user_data[0]);

输出

Array ([  
   Cust_id
]=> 38[  
   Contact_id
]=> 159[  
   Installer
]=> 1[  
   Supervisor
]=> 1[  
   Admin
]=> 1[  
   Token
]=> 26754782238745DD4B7FEFA375FD5160 )