我正在使用Laravel的缓存功能在Redis中存储密钥。密钥存储为一个数组,Laravel的缓存会自动将其序列化并取消序列化为如下内容:
"s:18:'"['"bob'",'"dave'"]'";"
在PHP中,Laravel处理解析,但我需要访问Javascript中的数据。我正在节点中使用ioredis
包。除了对数据进行非序列化之外,一切都很好。
var Redis = require('ioredis');
var rediscache = new Redis();
rediscache.get("mykey", function (err, result) {
//Attempt to parse?
result = JSON.parse(result);
}
密钥已正确提取,但被固定为字符串。我尝试了JSON.parse
,但这引发了一个错误,我想是因为格式错误。
Unexpected token s at Object.parse (native)
如何才能正确地取消序列化?理想情况下,我想把它作为一个Javascript数组,这样一个值就可以被更改,然后重新序列化并保存回Redis。
非常感谢。
您所拥有的是一个包含JSON字符串的序列化字符串。
如果你不想自己写,你可以使用图书馆:https://github.com/naholyr/js-php-unserialize
之后,您将获得一个JSON字符串,然后可以对其进行解析。