如何反序列化json中的字符串?

时间:2019-07-14 13:56:04

标签: php wordpress

这是我获取json的方法:

$response = wp_remote_get(get_home_url()."2/wp-json/wp/v2/posts?include=".$userPostsExternal);
var_dump($response);

然后我得到

"details":{  ...

   "location":[  
      "a:3:{s:7:\"address\";s:95:\"Avinguda de la Granvia de l\u2019Hospitalet, 8, 08902 L'Hospitalet de Llobregat, Barcelona, Spagna\";s:3:\"lat\";s:17:\"41.36256133817761\";s:3:\"lng\";s:17:\"2.131976960327165\";}"

This answer says

  

“奇怪”值实际上是PHP的序列化-您可以反序列化它   在json_encode之前,在服务器端使用unserialize,您应该   很好。

     

Wordpress通过这种方式对元数据进行序列化,以便可以将任何对象   保存为字符串。诀窍是使用PHP反序列化来获得   有效的PHP对象,然后再创建有效的JSON对象。

read the php doc

我尝试了以下操作,但这是错误的,我从没使用过unserialize

unserialize($response["details"]["location"])

这给出了消息

  

警告:json_decode()期望参数1为字符串,给定数组

1 个答案:

答案 0 :(得分:1)

您的位置数据也是一个数组,因此您缺少访问实际序列化数据的最后一级...

unserialize($response["details"]["location"])

需要成为

$data = unserialize($response["details"]["location"][0]);

您可以

print_r($data);

查看新数据。