我使用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。
非常感谢。
答案 0 :(得分:1)
你所拥有的是一个包含JSON字符串的序列化字符串。
如果您不想自己编写图书馆,可以使用图书馆:https://github.com/naholyr/js-php-unserialize
之后,您将拥有一个JSON字符串,然后您可以对其进行解析。