jq зависает при попытке извлечь данные из json - PullRequest
0 голосов
/ 06 июля 2018

Мой файл Json имеет следующую структуру

{
"group0": [
    {
        "id": 9,
        "href": "href1",
        "name": "Americas",
        "group1": [
            {
                "id": 8,
                "href": "href2",
                "name": "Anguilla (UK)",
                "type": "country",
                "code": "ai",
                "group2": {
                    "field1": 9,
                    "field2": 1,
                    "field3": 1
                }
            },
            {
                "id": 9,
                "href": "href3",
                "name": "Antigua and Barbuda",
                "type": "country",
                "code": "ag",
                "group2": {
                    "field1": 9,
                    "field2": 1,
                    "field3": 2
                }
            },
            {
                "id": 10,
                "href": "href4",
                "name": "Argentina",
                "type": "country",
                "code": "ar",
                "group2": {
                    "field1": 8,
                    "field2": 1,
                    "field3": 2
                },
                "group3": [
                    {
                        "id": 599,
                        "href": "",
                        "name": "Rosario and Santa Fe (both Santa Fe province)",
                        "field3": 3
                    }
                ]
            }

        ]
    },
    {
        "id": 10,
        "href": "href5",
        "name": "Asia & the Pacific",
        "group1": [
            {
                "id": 1,
                "href": "href6",
                "name": "Afghanistan",
                "type": "country",
                "code": "af",
                "group2": {
                    "field1": 10,
                    "field2": 3,
                    "field3": 5
                }
            },
            {
                "id": 14,
                "href": "href7",
                "name": "Australia",
                "type": "country",
                "code": "au",
                "group2": {
                    "field1": 7,
                    "field2": 1,
                    "field3": 2
                }
            },
            {
                "id": 19,
                "href": "href8",
                "name": "Bangladesh",
                "type": "country",
                "code": "bd",
                "group2": {
                    "field1": 9,
                    "field2": 2,
                    "field3": 3
                },
                "group3": [
                    {
                        "id": 216,
                        "href": "",
                        "name": "Chittagong Hill Tracts; Dhaka",
                        "field3": 4
                    }
                ]
            }

        ]
    }  
]

}

я хочу извлечь fileds group1.field0, group1.name, group2.field1, group1.field3

команда, которую я запускаю, ниже

jq '.group0[].group1[]|"\(.name)|\(.field0)|\(.group2.field1)|\(.group2.field3)"' sample.json

когда я запускаю приведенную выше команду в Solaris, она просто зависает и ничего не делает. когда я запускаю приведенную ниже команду, я получаю данные

jq '.group0[].group1[]|"\(.name)|\(.field0)"' sample.json

Может кто-нибудь, пожалуйста, помогите мне, что я делаю не так. первая команда работает на jqplay.org, который использует версию jq 1.5, а версия jq на нашем сервере - 1.4. я не знаю, может ли проблема быть в более низкой версии (последняя версия для Solaris - только 1.4).

1 Ответ

0 голосов
/ 06 июля 2018

Я убедился, что проблема НЕ возникает при использовании jq 1.4, jq 1.5 или версии "master" для разработчиков в MacOS.

Тем не менее, я думаю, что было бы целесообразно обновить до jq 1.5 или более поздней версии.

Следующее вполне может сработать: заменить (.group2.field1) на (.group2|.field1) и аналогично для (.group2.field2)

...