繁体   English   中英

PHP json_decode无法从数据库(pma)工作

[英]php json_decode not working from database (pma)

我正在尝试使用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()的返回;

遮篷是我在执行json_decode之前先转义了字符串。 而且因为我在那里有很多反斜线。

感谢@Matthijs我找到了它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM