我有以下JSON格式:

    "MediaContainer": {
        "Metadata": [
            {
                "Key": "5d77682c151a60001f24bbe8",
                "Image": [
                    {
                        "alt": "image",
                        "type": "background",
                        "url": "https://image.tmdb.org/t/p/original/f8Q3Sug5Sa42psw2b3Gdd1aT8t.jpg"
                    },
                    {
                        "alt": "image",
                        "type": "clearLogoWide",
                        "url": "http://assets.fanart.tv/fanart/movies/2639/hdmovielogo/deconstructing-harry-60f13837ee6aa.png"
                    },
                    {
                        "alt": "image",
                        "type": "coverArt",
                        "url": "https://metadata-static.imdb.com/4/gracenote/44a1852151a726d730c214b97986c27e.jpg"
                    },
                    {
                        "alt": "image",
                        "type": "coverPoster",
                        "url": "https://image.tmdb.org/t/p/original/i7Z5DdznqANJUjqWISEFu9bw6J7.jpg"
                    },
                    {
                        "alt": "image",
                        "type": "coverSquare",
                        "url": "https://metadata-static.imdb.com/c/gracenote/c8c351b348baf43a909e4a3b1c60a443.jpg"
                    },
                    {
                        "alt": "image",
                        "type": "snapshot",
                        "url": "https://metadata-static.imdb.com/a/gracenote/ab5a905958de8d43c763d74153242690.jpg"
                    }
                ],
            },

我正在try 输出TSV,其中每行都包含"key"和"Image"数组中的第一个"url"值,该数组包含字符串"fan art".因此,以上面的JSON为例,我要寻找的输出是:

5d77682c151a60001f24bbe8 http://assets.fanart.tv/fanart/movies/2639/hdmovielogo/deconstructing-harry-60f13837ee6aa.png

下面是我失败的try ,它只是吐出编译错误:

jq -r '.MediaContainer.Metadata[] | [.ratingKey,.Image[] | select( .url as $items | "fanart" | IN($items[]) )] | @tsv' 'trending.json'

推荐答案

你们已经很接近了.在这里,我们使用first来获取满足条件的第一个URL,前提是至少有一个:

.MediaContainer.Metadata[]
| [.Key, first(.Image[].url | select(test("fanart") ) ) ]
| @tsv

如果没有.url满足 Select 标准,上述方法可能仍然可以接受,但如果不满足 Select 条件,则添加您的调整应该很容易.

Json相关问答推荐

需要Jolt规范将具有动态字段的输入json转换为输出json

如何在使用GO时检测JSON中不需要的字段?

NIFI-我需要数组的信息,但只需要第一个信息

修改Deneb图表中工具提示的字体大小

属性错误:';ActivitiesClient';对象没有属性';base_url';

使用JQ将对象数组转换为平面数组

用巨大的值更新SQL Server中的nvarchar(max)

在 SQL 存储过程中使用参数 Select 值

使用 Power BI 中的 Deneb 视觉效果绘制面积图中的 X 轴日期

条件性构建/修改嵌套对象数组

Rust实现:高效解析任意大小的JSON数组

如何修复通过在 tsconfig.json 文件中添加allowImportingTsExtensions引发的错误 TS5023?

无法在Kotlin 中解析JSONObject

使用 json 值过滤 Django 模型

在 rust 中从 API 反序列化 serde_json

哪个更好:Json 或 XML (PHP)

如何使用 Jackson 定义可选的 json 字段

如何在 Python 中合并两个 json 字符串?

NSURLRequest 中不支持的 URL

log4j 支持 JSON 格式吗?