arrays - 如何从 json 文件中删除一个空对象
问题描述
我有一个看起来像这样的 json 文件:
[
[
[
{
"expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations",
"id": "10000",
"self": "https://test.atlassian.net/rest/api/latest/issue/10000",
"key": "AGILE-1",
"components": [],
"timetracking": {}
}
]
]
]
我想删除空数组,如时间跟踪和组件。
我在网上阅读了很多内容并尝试了不同的方法,但我只设法删除了 null 或空值,但删除了整个数组或对象。
这是我尝试过的:
cat $FilePathOrigin | jq-win64.exe -sc 'fromstream(tostream | select(length == 1 or .[1] != null))' > $FilePathDestiny
解决方案
正如评论中所观察到的,您想要什么并不完全清楚,但是如果您想删除值等于 [] 或 {} 的键,那么您可以walk
像这样使用:
walk(if type == "object"
then with_entries(if .value == {} or .value == [] then empty else . end)
else . end)
这也可以更简洁地写成:
walk(if type == "object" then with_entries(select(.value | (. != {} and . != []))) else . end)
如果您只想从特定对象中删除键,那么最简单的方法可能是with_entries
如上所述使用。
关于警告length
length
不仅在数组和对象上定义!
推荐阅读
- javascript - 如何使用 jimp javascript 为动画 gif 图像添加水印?
- ios - 写入核心数据后,Swift .sheet 模态不会关闭
- regex - .htaccess 允许 www 和非 www
- android - NullPointerException:在 android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures (DrawableContainer.java:881)
- python - 归档未在计划内打开
- javascript - 学习 Redux Thunk。如何触发动作
- javascript - 图像更改时如何绘制画布
- c++ - 不明白 while(cin>>a>>b, a)
- javascript - 将参数传递给 addEventListener 的处理函数
- ios - 使用 CollectionView 制作自定义标签栏