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, "[=22=]");

$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"\;\:"\;[=21=], inch (, cm)"\;,"\;\Beeldresolutie"\;\:"\;[=21=] x [=21=][=21=]"\;,"\;\Batterijduur"\;\:"\;\Tot  uur"\;,"\;\Gewicht"\;\:"\; g"\;,"\;\Opslag"\;\:"\; \G\B"\;}

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

也试过: $belangrijkespecs = preg_replace('/\\/', '', $belangrijkespecs); 但是没有用。

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

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

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

并且我期望 json_decode();

中的 return 数组

答案是我在 json_decode 之前转义了字符串。而且因为我在那里做了很多反斜杠。

感谢@Matthijs 我找到了它