【发布时间】:2021-10-14 18:16:59
【问题描述】:
我尝试预处理一个 JSON 文件并希望删除其中的所有子对象。
请注意,我的 JSON 字符串是内联的(没有 \r)。
输入我有:
{
"total": 2,
"result": [
{
"id":1,
"createdOn" : 123456,
"obj1": {
...:...,
...:...
},
"obj2": {
...:...,
...:...
},
"otherattribute": "..."
},
{
"id":2,
"createdOn" : 123456,
"obj1": {
...:...,
...:...
},
"obj2": {
...:...,
...:...
},
"otherattribute": "..."
}
]
}
又想拥有:
{
"total": 2,
"result": [
{
"id":1,
"createdOn" : 123456,
"otherattribute": "..."
},
{
"id":2,
"createdOn" : 123456,
"otherattribute": "..."
}
]
}
我尝试过使用 sed 命令:
sed 's/"obj1":{[^}]*//g'
它将删除“ojb1”子对象,但保留该子对象的结尾“}”。 我没有找到删除“}”的方法。
怎么做?
第二个问题:我知道主题列表;但是有没有办法在不知道名字的情况下直接删除所有这些主题?比如:
sed 's/".*":{[^}]*//g'
这样我就只有一个 sed 命令,而不必像这样链接命令:
sed 's/obj1//g' | sed 's/obj2//g' | sed 's/obj3//g' ...
【问题讨论】:
-
我什至不会考虑使用 sed 编辑 JSON。无论你用 sed 写什么,我都会在两分钟内创建一个单元测试来打破它。
-
Super... 我必须解析的 json 字符串将始终被格式化为相同的.. 格式。它不是一个完全通用的 JSON 字符串。所以我想我可以使用 sed 来预处理我的 json 字符串。