【问题标题】:php json_decode not working from database (pma)php json_decode不能从数据库(pma)工作
【发布时间】:2019-05-17 02:46:06
【问题描述】:

我正在尝试使用PHP的json_decode函数从数据库(phpmyadmin)中获取数据(类型设置为文本)并在页面上设置这是我得到的代码:

$belangrijkespecs = $productClass->get('belangrijkeSpecs');
$belangrijkespecs = json_decode($belangrijkespecs);
var_dump($belangrijkespecs);

这段代码输出

NULL

当我回显 $productClass->get('belangrijkeSpecs') 时,它会输出:

{"Beeldschermdiagonaal":"10,1 inch (25,7 cm)","Beeldresolutie":"1920 x 1200","Batterijduur":"Tot 12 uur","Gewicht":"525 g","Opslag":"32 GB"}

当我在一个在线 JSON 解码网站中传递它时,我得到了正确的数组(来自网站 https://3v4l.org/IHKZZ):

array (
  'Beeldschermdiagonaal' => '10,1 inch (25,7 cm)',
  'Beeldresolutie' => '1920 x 1200',
  'Batterijduur' => 'Tot 12 uur',
  'Gewicht' => '525 g',
  'Opslag' => '32 GB',
)

当我用这段代码尝试 json_last_error() 时:

switch (json_last_error()) {
                case JSON_ERROR_NONE:
                    echo ' - No errors';
                break;
                case JSON_ERROR_DEPTH:
                    echo ' - Maximum stack depth exceeded';
                break;
                case JSON_ERROR_STATE_MISMATCH:
                    echo ' - Underflow or the modes mismatch';
                break;
                case JSON_ERROR_CTRL_CHAR:
                    echo ' - Unexpected control character found';
                break;
                case JSON_ERROR_SYNTAX:
                    echo ' - Syntax error, malformed JSON';
                break;
                case JSON_ERROR_UTF8:
                    echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
                break;
                default:
                    echo ' - Unknown error';
                break;
            }

输出

- Syntax error, malformed JSON

如果我只使用 echo json_last_error() 它输出:4。

我已经试过了:

$belangrijkespecs = str_replace("/", "", $belangrijkespecs);

$belangrijkespecs = rtrim($belangrijkespecs, "\0");

$belangrijkespecs = stripslashes($belangrijkespecs);

var_dump $productClass->get('belangrijkeSpecs') 的输出:

string(240) "{"Beeldschermdiagonaal":"10,1 inch (25,7 cm)","Beeldresolutie":"1920 x 1200","Batterijduur":"Tot 12 uur","Gewicht":"525 g","Opslag":"32 GB"

echo addcslashes($belangrijkespecs, '\0..\37!@\177..\377') 的输出为:

{"\;\Beeldschermdiagonaal"\;\:"\;\1\0,\1 inch (\2\5,\7 cm)"\;,"\;\Beeldresolutie"\;\:"\;\1\9\2\0 x \1\2\0\0"\;,"\;\Batterijduur"\;\:"\;\Tot \1\2 uur"\;,"\;\Gewicht"\;\:"\;\5\2\5 g"\;,"\;\Opslag"\;\:"\;\3\2 \G\B"\;}

当我这样做的时候 $belangrijkespecs = stripslashes($belangrijkespecs); 在 json_decode 之前它仍然不起作用...

还尝试过: $belangrijkespecs = preg_replace('/\\\\/', '', $belangrijkespecs); 但它不起作用。

这个 'belangrijkeSpecs' 的结构 = http://prntscr.com/lvnsbh

我在网上看过,但给出的答案对我没有帮助。

所以我的问题是: 如何从 json 编码字符串中获取数组 ( $productClass->get('belangrijkeSpecs') )

我期望一个数组作为 json_decode() 的返回值;

【问题讨论】:

  • 去掉这行的回声echo $belangrijkespecs = $productClass->get('belangrijkeSpecs');
  • 没有没有用。 :(
  • 目前还不清楚你的问题是什么以及你真正想要做什么
  • 目前还不清楚你的实际问题是什么
  • 由于问题中的 json 字符串解码良好 - $productClass->get('belangrijkeSpecs') 很可能实际上并未返回您认为的内容。 var_dump($belangrijkespecs);(在尝试解码之前)会确认。请注意,重用/重新分配变量 ($thing = method($thing);) 会使调试变得更加困难 - 最好避免。

标签: php json decode


【解决方案1】:

结果是我在执行 json_decode 之前转义了字符串。因为我在那里做了很多反斜杠。

感谢@Matthijs,我找到了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多