是否可以像在php上一样在node.js上取消序列化



嗨,

我正在尝试使用PHPnseralize.unseralize:取消对以下字符串的序列化

a:3:{i:19694;a:5:{s:16:"ignore_ignore_id";s:5:"19694";s:15:"ignore_messages";s:1:"1";s:17:"ignore_signatures";s:1:"1";s:13:"ignore_topics";s:1:"1";s:12:"ignore_chats";s:1:"0";}i:25895;a:5:{s:16:"ignore_ignore_id";s:5:"25895";s:15:"ignore_messages";s:1:"0";s:17:"ignore_signatures";s:1:"0";s:13:"ignore_topics";s:1:"0";s:12:"ignore_chats";s:1:"1";}i:19917;a:5:{s:16:"ignore_ignore_id";s:5:"19917";s:15:"ignore_messages";s:1:"1";s:17:"ignore_signatures";s:1:"0";s:13:"ignore_topics";s:1:"0";s:12:"ignore_chats";s:1:"0";}}

我只需要ID;ignore_chats"=1,所以我希望输出:[25895]

我曾经用以下代码在php上实现这一点:

$igusers = unserialize($ignored);

foreach($igusers as $key => $value) {
if($value['ignore_chats'] == 1) {
$ignoredids .= "[".$value['ignore_ignore_id']."]";
}
}

在node.js上,我试过这样做:

PHPUnserialize.unserialize(ignored)

但我得到以下错误:

SyntaxError: Unknown / Unhandled data type(s)

为什么?

谢谢。

我能够使用npm库php-serialize取消序列化

// using node v14.15.3
const {unserialize} = require('php-serialize');
const a = unserialize('a:3:{i:19694;a:5:{s:16:"ignore_ignore_id";s:5:"19694";s:15:"ignore_messages";s:1:"1";s:17:"ignore_signatures";s:1:"1";s:13:"ignore_topics";s:1:"1";s:12:"ignore_chats";s:1:"0";}i:25895;a:5:{s:16:"ignore_ignore_id";s:5:"25895";s:15:"ignore_messages";s:1:"0";s:17:"ignore_signatures";s:1:"0";s:13:"ignore_topics";s:1:"0";s:12:"ignore_chats";s:1:"1";}i:19917;a:5:{s:16:"ignore_ignore_id";s:5:"19917";s:15:"ignore_messages";s:1:"1";s:17:"ignore_signatures";s:1:"0";s:13:"ignore_topics";s:1:"0";s:12:"ignore_chats";s:1:"0";}}');
const b = Object.values(a).filter(v => (v.ignore_chats === '1')).map(v => v.ignore_ignore_id);
console.log(a); 
/* prints out:
{
'19694': {
ignore_ignore_id: '19694',
ignore_messages: '1',
ignore_signatures: '1',
ignore_topics: '1',
ignore_chats: '0'
},
'19917': {
ignore_ignore_id: '19917',
ignore_messages: '1',
ignore_signatures: '0',
ignore_topics: '0',
ignore_chats: '0'
},
'25895': {
ignore_ignore_id: '25895',
ignore_messages: '0',
ignore_signatures: '0',
ignore_topics: '0',
ignore_chats: '1'
}
}
*/
console.log(b)
/* prints out
[ '25895' ]
*/

最新更新