我正在尝试使用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()的返回值;
答案 0 :(得分:-1)
遮阳篷是我在执行json_decode之前对字符串进行了转义。而且因为我在那里有很多反斜杠。
感谢@Matthijs我找到了