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 我找到了它
我正在尝试使用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 我找到了它