因此,我正在尝试将解码的JSON对象存储到绑定的Apache会话中。这是我的代码:
$url="https://apilink";
$content = get($url);
die "Can't Get $url" if (! defined $content);
$jsonOb = decode_json($content);
%aprecords = %$jsonOb;
#Push the jsonOb in the session
$session{apirecords} = \%aprecords ;
$session{apirecords}
不存储%aprecords
引用。虽然,当我将语句替换为$session{apirecords} = \%jsonOb ;
时,它将apirecords
存储在会话表中,但是对%jsonOb的引用中没有任何值。
PS:
我已经尝试了以下方法,但似乎都没有效果:
1)$session{apirecords} = \%$jsonOb ;
2)$session{apirecords} = { %aprecords } ;
JSON对象具有良好的结构。
绑定会话的代码:
tie %session, "Apache::Session::MySQL", $sessionID,
{
Handle => $dbObject,
LockHandle => $dbObject,
TableName => 'sessions',
};
#If a session ID doesn't exist, create a new session and get new session ID
if (!defined ($sessionID)){
$sessionID = $session{_session_id};
$session{count}=0;
}
非常感谢您的帮助!
JSON示例:https://jsonblob.com/feed3bba-f1cd-11e8-9450-2904e8ecf943
答案 0 :(得分:0)
正如GMB所指出的。 Blob大小(64 KB)不足以容纳JSON对象。
解决方案是将blob
数据类型更改为mediumblob
。