代码之家  ›  专栏  ›  技术社区  ›  rob.m

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

  •  0
  • rob.m  · 技术社区  · 5 年前

    我就是这样得到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—您可以反序列化它 好的。

    Wordpress以这种方式序列化元数据,因此任何对象都可以 在创建有效的JSON对象之前,先创建有效的PHP对象。

    read the php doc

    unserialize

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

    这给了我们一个信息

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

    1 回复  |  直到 5 年前
        1
  •  1
  •   Nigel Ren    5 年前

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

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

    必须是

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

    那你就可以了

    print_r($data);
    

    查看新数据。