是否可以像在 php 上一样在 node.js 上反序列化?
Is it possible to unserialize on node.js just like on php?
嗨,
我正在尝试使用 PHPUnserialize.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";}}
我只需要其中“ignore_chats”= 1 的 ID,所以我希望得到以下输出:[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' ]
*/
嗨,
我正在尝试使用 PHPUnserialize.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";}}
我只需要其中“ignore_chats”= 1 的 ID,所以我希望得到以下输出:[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' ]
*/