2015-11-10 107 views
0

我正在使用Laravel的緩存功能在Redis中存儲密鑰。關鍵是作爲數組保存其Laravel的緩存自動序列和unserializes弄成這個樣子:使用Javascript解析序列化的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) 

它怎樣才能正確unserialised?理想情況下,我想將它作爲Javascript數組來使用,以便可以更改值,然後重新序列化並保存回Redis。

非常感謝。

回答

1

你有什麼是一個包含JSON字符串的序列化字符串。

您可以使用圖書館,如果你不想自己動手寫:https://github.com/naholyr/js-php-unserialize

之後,你就會有一個JSON字符串,然後你就可以解析。

+0

太棒了,這真的很好。有關如何重新序列化以保存Laravel格式的想法?這個軟件包只允許你反序列化。 – samiles

+1

序列化本身並不難。做一個快速谷歌,我發現有一個庫已經(最有可能)完成這項工作:https://github.com/joesonw/node-php-serialization。 – Andrius