我想知道是否可以使用单行命令(例如使用sed)删除所有符合给定条件的JSON字段。如果不能使用一行程序,我希望使用最简单/最小的方法。
例如:我决定不再需要"id“字段。
输入JSON文件:
{
"games": [
{"id": "1","name": "Mario", "game": "nintendo"},
{"id": "2","name": "Luigi", "game": "nintendo"},
{"id": "3","name": "Sonic", "game": "sega"}
]
}预期输出:
{
"games": [
{"name": "Mario", "game": "nintendo"},
{"name": "Luigi", "game": "nintendo"},
{"name": "Sonic", "game": "sega"}
]
}谢谢你的帮助。
发布于 2018-06-04 19:24:34
发布于 2018-06-04 19:16:27
使用foreach方法并在循环中删除:
let obj = JSON.parse ( yourJson );
Object.keys(obj).forEach( (key) => {
delete obj[key];
});
yourJson = JSON.stringify( obj );发布于 2018-06-04 20:22:43
我能够弄清楚如何使用sed来做到这一点。以下命令适用于上面的示例:
sed 's/\("id":\).*\("name\)/\2/' games.json这是如何工作的:
sed 's/\(FROM\).*\(UNTIL\)/FROM_INCLUSIVE UNTIL_INCLUSIVE/' input_file此命令将位于来自的中的字符串和UNTIL中的字符串之间的所有内容替换为空字符串。然后我们可以指定是否应该保留这些字符串:\1将保留来自的中的字符串,\2将保留直到,省略表示排除。在上面的示例中,我们要删除存在于名称“id”:和“”之间的所有内容,同时排除前者(没有\1),包括后者(有\2)。
https://stackoverflow.com/questions/50679123
复制相似问题