Я использую машинопись для анализа счета, представленного файлом 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 для проверки значения свойства, родительское свойство которого также может быть нулевым?
Большое спасибо, это действительно помогло бы мне