使用Javascript解析序列化的Laravel缓存数据


Parse serialized Laravel cache data with Javascript

我正在使用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字符串,然后可以对其进行解析。