Путь JSON - как проверить значение необязательного параметра - PullRequest
0 голосов
/ 20 марта 2019

Я использую машинопись для анализа счета, представленного файлом JSON, сгенерированным программным обеспечением, на которое я не могу повлиять. Этот счет-фактура состоит из двух строк , одна строка предназначена для элемента (эта строка имеет LineType = null ), вторая - для налога, относящегося к этой позиции (эта строка имеет LineType с некоторым уникальным значением)

{
    "headerData": "some header data",
    "LineItems": [{
            "date": "somedate",
            "item": "item name",
            "customer": "some customer",
            "LineType": null
        },
        {
            "taxtada": "some data",
            "customer": "some customer",
            "parentLine": 0,
            "LineType": {
                "UniqueValue": "SalesTax"
            }
        }]
}

Моя первоначальная идея состояла в том, чтобы создать два массива - один, содержащий объекты строки элемента, второй - строки налога, а затем обработать их дальше.Для этого я пытаюсь использовать jsonpath-plus, например так (источником является файл json)

const taxLines: any[] = JSONPath({ path: '$..LineItems[?(@.LineType.UniqueName==="SalesTax")]', json: source });
const itemLines: any[] = JSONPath({ path: '$..LineItems[?(@.LineType.UniqueName!=="SalesTax")]', json: source });

, это хорошо работает, когда все объекты в массиве имеют LineType и соответствующие UniqueName ,Однако, если LineType = null , я получаю сообщение об ошибке - невозможно проверить свойство «UniqueTax», когда родительское свойство LineType имеет значение null / undefined.

Мой вопросэто - как это обойти?Как использовать jsonpath-plus для проверки значения свойства, родительское свойство которого также может быть нулевым?

Большое спасибо, это действительно помогло бы мне

...