I have this string:
posts{id,title},posts2{id,title}
我将其转换为一个对象:
{
posts: [
'id',
'title'
],
posts2: [
'id',
'title'
]
}
我该如何做到这一点?
I have this string:
posts{id,title},posts2{id,title}
{
posts: [
'id',
'title'
],
posts2: [
'id',
'title'
]
}
我该如何做到这一点?
const input = 'posts{id,title},posts2{id,title}';
const parse = (input) => {
return input
.replaceAll('{', '[')
.replaceAll('}', ']')
.replaceAll('],', '] , ')
.split(' , ')
.reduce((_, item) => {
const key = item.split('[')[0];
const value = item
.replace(`${key}[`, '')
.replace(']', '')
.split(',')
return {
..._,
[key]: value
};
}, {})
};
const parsed = parse(input);
无论如何,我不知道处理这个符号有什么好处。
假设字符串符合指定的格式:
您可以将字符串拆分为键-列表项对。 然后,遍历它们并将每个插入对象中,如下所示:
const stringify = string => {
const obj = {};
if(string) {
const pairs = string.substring(0,string.length-1).split('},');
pairs.forEach(pair => {
const [key,value] = pair.split('{');
obj[key] = value.split(",").filter(String);
});
}
return obj;
}
console.log( stringify('posts{id,title},posts2{id,title}') );
console.log( stringify('posts{id,title}') );
console.log( stringify('posts{}') );
console.log( stringify('') );