Как использовать несколько условий if else с использованием тернарного оператора в jsonpath — plus?

#javascript #node.js #jsonpath

Вопрос:

JSON

 {
   "customer":{
      "address":{
         "stateRegion":"",
         "stateRegionCode":""
      }
   }
}
 

Код

 "address.state_code": "$.customer.address.[stateRegion ? stateRegion: stateRegionCode?stateRegionCode: null]",
 

Здесь , в приведенном выше выражении , я хочу stateRegion в качестве значения , если оно присутствует в клиенте как родительский объект и адрес как дочерний объект, иначе я хочу stateRegionCode , и если оба они отсутствуют, я хочу null , как мы можем настроить эту вещь с помощью jsonpath-plus?

Ответ №1:

Вы не можете сделать это во время первоначального создания объекта, поскольку для доступа к свойствам объекта (для использования в вашем условном выражении) требуется, чтобы объект уже существовал.

Возможно, самое близкое, что вы можете сделать, — это, как только вы определили объект, написать что-то похожее на ваш "address.state_code": "$.customer.address.[stateRegion ? stateRegion: stateRegionCode?stateRegionCode: null]" :

 const
  $ = { "customer" : { "address" : { "stateRegion" : "", "stateRegionCode" : "" } } },
  {stateRegion, stateRegionCode} = $.customer.address; // Destructures address
$.customer.address.state_code = stateRegion
  ? stateRegion
  : stateRegionCode
    ? stateRegionCode
    : null;

console.log($.customer.address); 

Комментарии:

1. Спасибо за ваш ответ , но мой вопрос был чем-то другим , я задавал в синтаксисе json-path plus, можем ли мы использовать тернарный оператор для нескольких условий if else?

2. Ладно, конечно. Я добавил тег jsonpath к вопросу для ясности.