这是我获取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\";}"
“奇怪”值实际上是PHP的序列化-您可以反序列化它 在json_encode之前,在服务器端使用unserialize,您应该 很好。
Wordpress通过这种方式对元数据进行序列化,以便可以将任何对象 保存为字符串。诀窍是使用PHP反序列化来获得 有效的PHP对象,然后再创建有效的JSON对象。
我尝试了以下操作,但这是错误的,我从没使用过unserialize
unserialize($response["details"]["location"])
这给出了消息
警告:json_decode()期望参数1为字符串,给定数组
答案 0 :(得分:1)
您的位置数据也是一个数组,因此您缺少访问实际序列化数据的最后一级...
unserialize($response["details"]["location"])
需要成为
$data = unserialize($response["details"]["location"][0]);
您可以
print_r($data);
查看新数据。