如何滤除具有特定属性的元素(或保留不具有该属性的元素)

Spanky Quigman

我正在处理dcm2json的输出,该输出将元数据从DICOM格式的医学影像数据转换为JSON。此元数据的值主要是字符串,整数,浮点数和类似值,但它还包括以base64编码的字符串形式的内联二进制值。我们不需要那些二进制文件,它们可以变得很大,所以我需要过滤掉所有具有InlineBinary属性的元数据元素。以下是dcm2json的JSON输出的样本(非常简单):

{
    "00080005": {
        "vr": "CS",
        "Value": ["ISO_IR 192"]
    },
    "00291010": {
        "vr": "OB",
        "InlineBinary": "Zm9vYmFyCg=="
    }
}

我想将其转换为:

{
    "00080005": {
        "vr": "CS",
        "Value": ["ISO_IR 192"]
    }
}

我尝试了一些不同的方法,这些方法均无效,但最终使用了以下方法:

$ dcm2json file.dcm | jq '[to_entries | .[] | select(.value.Value)] | from_entries'

我一直在玩它,因为我不喜欢将该表达式嵌入到数组中(即[to_entries ...])。我想出了一些更优雅的方法,但是我对它为什么以这种方式起作用感到完全困惑:

jq 'to_entries | . - map(select(.value | has("InlineBinary") == true)) | from_entries' | less

令人困惑的是has("InlineBinary") == true位。我首先进行比较,false因为我想要的是那些没有InlineBinary属性的元素为什么它看起来似乎与我要求的相反?考虑到我真的不了解其中的. - map(...)结构发生了什么(我完全从另一篇帖子中提出了类似问题的信息中清除了它),我并不惊讶它做了我不理解的事情,但我想了解那是为什么:)

我感到困惑的另一件事是to_entries/from_entries/with_entries手册说这些

with_entries(foo)是to_entries的简写| map(foo)| from_entries

凉!因此将是:

jq 'with_entries(map( . - map(select(.value | has("InlineBinary") == true))))'

但这不起作用:

$ cat 1.json | jq 'with_entries(map(. - map(select(.value | has("InlineBinary") == true))))'
jq: error (at <stdin>:848): Cannot iterate over string ("00080005")

考虑到该语句在功能上是等效的,因此我不确定为什么这行不通。

感谢您提供的任何信息!

选择键值对时,with_entries通常是选择的工具:

with_entries( select(.value | has("InlineBinary") | not) )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何选择不具有ID属性的元素?

来自分类Dev

检查元素是否不具有jQuery属性

来自分类Dev

选择具有不具有给定属性的子元素的元素的子元素

来自分类Dev

不具有[DataMember]属性与具有[IgnoreDataMember]属性

来自分类Dev

不具有[DataMember]属性与具有[IgnoreDataMember]属性

来自分类Dev

为什么Blazor组件和元素不具有ID属性

来自分类Dev

如何遍历不具有id属性的对象列表

来自分类Dev

如何限制构造型不具有属性?

来自分类Dev

使用BeautifulSoup4选择具有类且不具有属性的所有元素

来自分类Dev

如何从数组中删除所有不具有特定属性的对象?

来自分类Dev

Wiremock:如何匹配不具有特定属性的JSON请求?

来自分类Dev

查找具有特定名称且不具有特定属性的在前同级

来自分类Dev

查找具有特定名称且不具有特定属性的在前同级

来自分类Dev

XSL计算父节点不具有具有特定属性的子节点

来自分类Dev

JSF:PropertyNotFoundException类“不具有属性”

来自分类Dev

使用querySelector选择不具有值属性的输入

来自分类Dev

发布/订阅推送消息不具有messageId属性

来自分类Dev

使用XPath查找不具有ALT属性的图像

来自分类Dev

WPF组合框样式不具有绑定属性

来自分类Dev

具有@JsonIgnore的属性与不具有注释的属性之间有什么区别?

来自分类Dev

如何选择所有不具有align属性的p和其他样式选项

来自分类Dev

如何获取所有不具有给定属性的实体?

来自分类Dev

Splunk:查找不具有记录为不同日志行的特定属性的事件

来自分类Dev

如何证明不具有特定值的行?

来自分类Dev

如何读取不具有LINES属性的xaml文本框的最后一行

来自分类Dev

如何设置不可见项而不具有不可见属性?

来自分类Dev

如何修复AttributeError:'tuple'对象不具有使用Tensorflow创建DqnAgent的'rank'属性?

来自分类Dev

如何修复AttributeError:'tuple'对象不具有使用Tensorflow创建DqnAgent的'rank'属性?

来自分类Dev

如何启用“标签”属性到通常不具有的文件类型?

Related 相关文章

  1. 1

    如何选择不具有ID属性的元素?

  2. 2

    检查元素是否不具有jQuery属性

  3. 3

    选择具有不具有给定属性的子元素的元素的子元素

  4. 4

    不具有[DataMember]属性与具有[IgnoreDataMember]属性

  5. 5

    不具有[DataMember]属性与具有[IgnoreDataMember]属性

  6. 6

    为什么Blazor组件和元素不具有ID属性

  7. 7

    如何遍历不具有id属性的对象列表

  8. 8

    如何限制构造型不具有属性?

  9. 9

    使用BeautifulSoup4选择具有类且不具有属性的所有元素

  10. 10

    如何从数组中删除所有不具有特定属性的对象?

  11. 11

    Wiremock:如何匹配不具有特定属性的JSON请求?

  12. 12

    查找具有特定名称且不具有特定属性的在前同级

  13. 13

    查找具有特定名称且不具有特定属性的在前同级

  14. 14

    XSL计算父节点不具有具有特定属性的子节点

  15. 15

    JSF:PropertyNotFoundException类“不具有属性”

  16. 16

    使用querySelector选择不具有值属性的输入

  17. 17

    发布/订阅推送消息不具有messageId属性

  18. 18

    使用XPath查找不具有ALT属性的图像

  19. 19

    WPF组合框样式不具有绑定属性

  20. 20

    具有@JsonIgnore的属性与不具有注释的属性之间有什么区别?

  21. 21

    如何选择所有不具有align属性的p和其他样式选项

  22. 22

    如何获取所有不具有给定属性的实体?

  23. 23

    Splunk:查找不具有记录为不同日志行的特定属性的事件

  24. 24

    如何证明不具有特定值的行?

  25. 25

    如何读取不具有LINES属性的xaml文本框的最后一行

  26. 26

    如何设置不可见项而不具有不可见属性?

  27. 27

    如何修复AttributeError:'tuple'对象不具有使用Tensorflow创建DqnAgent的'rank'属性?

  28. 28

    如何修复AttributeError:'tuple'对象不具有使用Tensorflow创建DqnAgent的'rank'属性?

  29. 29

    如何启用“标签”属性到通常不具有的文件类型?

热门标签

归档