【问题标题】:Unserialize real escaped JSON string反序列化真正的转义 JSON 字符串
【发布时间】:2012-02-07 07:33:18
【问题描述】:

我正在尝试将 JSON 数据保存到 MySQL DB 和 PHP 中。我用过

// This is the JSON (from Twitter).
$result = 
Array
(
    [created_at] => Wed, 01 Feb 2012 03:53:25 +0000
    [entities] => Array
        (
            [hashtags] => Array
                (
                    [0] => Array
                        (
                            [text] => somehashtag
                            [indices] => Array
                                (
                                    [0] => 85
                                    [1] => 98
                                )

                        )

                )

$stringForDB = mysql_real_escape_string(serialize($result));

序列化。

我无法反序列化它。

我试过了

$obj=unserialize($stringForDB);

但是 $obj 是空白的。

【问题讨论】:

  • 为什么是serialize? JSON 数据已经是一个字符串。
  • @Gumbo 因为如果我没有收到'警告:mysql_real_escape_string() 期望参数 1 是字符串,.php 中给出的数组'
  • 那么您的 $result 不是有效的 JSON。还是要将数组编码为 JSON?也许最好发布 $result 的样子以及你想用它做什么。
  • 在反序列化之前尝试使用stripslashes()
  • 你刚刚给出了twitter的数组输出,,给出准确的feed url,,那么序列化和反序列化就很容易了。

标签: php json serialization


【解决方案1】:

mysql_real_escape_string 会在 ' 和 " 前面加上反斜杠,因此无法反序列化。

$serializedResult = serialize($result);

// $stringForDB can not be unserialized since it has extra backslashes
$stringForDB = mysql_real_escape_string($serializedResult));

// Some code to insert $stringForDB into the database

$obj=unserialize($serializedResult);

【讨论】:

    【解决方案2】:

    试试

    $obj=json_decode($stringForDB);
    

    http://php.net/manual/en/function.json-decode.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2019-02-05
      • 2023-03-23
      • 2021-09-02
      相关资源
      最近更新 更多