Как получить объект из массива объектов JSON на основе значения внутри объекта в Python? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть массив объектов json, который выглядит следующим образом:

{
    "testcases": {
        "testcase": {
            "custom-fields": {
                "custom-field": [{
                    "@id": "testCaseID",
                    "@content": "shotwell15"
                }, {
                    "#text": "-",
                    "@id": "casecomponent"
                }, {
                    "#text": "critical",
                    "@id": "caseimportance"
                }]
            },
            "title": "Shotwell 15"
        }
    }
}

Я пытаюсь использовать python и получить объект из массива custom-field на основе "значения" @id как это:

нахождение объекта:

{
   "#text": "critical",
   "@id": "caseimportance"
}

на основе значения "caseimportance"

Я пытался использовать фильтр, но это не похожеРабота.Я думаю, что это не должно быть так сложно.что-то, что так просто сделать в JavaScript или Ruby.В ruby ​​я мог бы просто использовать метод .select

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

В Python вы можете использовать понимание списка аналогично выбору Руби:

custom_fields = data["testcases"]["testcase"]["custom-fields"]["custom-field"]
filtered = [f for f in custom_fields if f["@id"] == "caseimportance"]

В Python также есть фильтр, который более непосредственно сопоставим с выбором Руби:

Python 2:

filtered = filter(lambda f: (f["@id"] == "caseimportance"), custom_fields)

Python 3:

filtered = list(filter(lambda f: (f["@id"] == "caseimportance"), custom_fields))

Однако понимание списков часто считается более Pythonic.

0 голосов
/ 18 февраля 2019

Модуль py 're' имеет функцию поиска, которую вы можете просмотреть, которая позволяет вам отфильтровывать определенное слово и затем использовать индексы для выбора других слов / текста файла json, которые находятся вокруг этого слова.

...