Удалите пустой объект с помощью толчка

Если имя присутствует, оно будет дополнено префиксом и постфиксом '', например '*Hello*'. Однако если имя отсутствует, добавляется только «**». Если имя необязательно, как избежать добавления только «**», когда запрос отсутствует? То же самое касается адресной строки1 и адресной строки2.

Обновления: в приведенном ниже запросе свойства postalCode и Tour не должны улучшаться.

Входной файл.json

{
  "search": {
    "party": {
      "name": "AccountName",
      "tour": "TourName"
    },
    "address": {
      "addressLine1": "US",
      "postalCode": "psCode"
    }
  }
}

ВстряскаТрансформация

[
  {
    "operation": "shift",
    "spec": {
      "search": {
        "party": {
          "name": "AccountName",
          "tour": "Tour"
        },
        "address": {
          "addressLine1": "add1",
          "addressLine2": "add2",
          "postalCode": "psCode"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "AccountName": "=concat('*',@(1,AccountName),'*')",
      "add1": "=concat('*',@(1,add1),'*')",
      "add2": "=concat('*',@(1,add2),'*')"
    }
  }
]


ActualOutput.json

{
  "AccountName" : "*AccountName*",
  "Tour" : "TourName",
  "add1" : "*US*",
  "add2" : "*UK*",
  "psCode" : "psCode"
}


ActualdOutput.json: если адресная строка2 отсутствует, добавляется **

{
  "AccountName" : "*AccountName*",
  "Tour" : "TourName",
  "add1" : "*US*",
  "psCode" : "psCode",
  "add2" : "**"
}


В фактическом выводе я хотел бы исключить «SecondaryRatings»: {} в ответе

Не могли бы вы рассказать подробнее, почему вы использовали спецификацию default, с каким типом входных данных вы можете столкнуться… и т. д.? Кстати, вас устраивает решение предыдущего вопроса?

Barbaros Özhan 15.04.2024 08:26

@BarbarosÖzhan Я обновил вопрос, в толчке нет раздела по умолчанию. Я обновил вопрос. Я принял предыдущий вопрос, спасибо за помощь.

Rakesh GR 15.04.2024 11:26

Кажется, в этом случае вам нужно удалить add2, а не несуществующий SecondaryRatings, не так ли?

Barbaros Özhan 15.04.2024 11:50
UK отсутствует для нового ввода...
Barbaros Özhan 15.04.2024 13:18
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет необходимости добавлять звездочки по отдельности, сделайте это общим способом, просто заменив текущую спецификацию изменения следующей:

  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*ame|add*": "=concat('*',@(1,&),'*')" // @(1,&) is a replacement for 
        // the current elements 
    }
  }

при этом нежелательные атрибуты самопроизвольно исчезнут, и будут затронуты только связанные наборы ограниченных атрибутов.

Это решение применимо ко всем свойствам, но внутри стороны и адреса могут быть и другие свойства, на которые это изменение не должно повлиять.

Rakesh GR 15.04.2024 12:24

@RakeshGR Затем вам нужно увидеть вашу реальную ситуацию в минимальном и воспроизводимом виде, а также включить все эти случаи, чтобы иметь возможность получить более надежные решения.

Barbaros Özhan 15.04.2024 12:48

Я обновил вопрос с фактическим запросом ввода с необязательными и всеми параметрами.

Rakesh GR 15.04.2024 13:11

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

Barbaros Özhan 15.04.2024 13:21
json { "AccountName" : "*AccountName*", "Tour" : "*TourName*", "add1" : "*US*", "psCode" : "*psCode*" } Это применимо ко всем полям, но должно применяться только к AccountName, addr1, addr2, остальные свойства должны быть такими, какие есть. @barbarps
Rakesh GR 15.04.2024 13:24

Я только что отредактировал @RakeshGR, кстати, их двойные ActualOutput

Barbaros Özhan 15.04.2024 14:21

Спасибо, все работает как ожидалось. Не могли бы вы удалить повторяющиеся двойные кавычки в этой строке? ""ame|add"": "=concat('',@(1,&),'')" работает как положено. Я поделился двумя ActualOutput, потому что витрина, когда значения пусты или равны нулю, просто добавляется «*».

Rakesh GR 18.04.2024 06:47

@RakeshGR, ох, извини, только что удалил их. Заботиться

Barbaros Özhan 18.04.2024 07:50

Когда AccountName, add1 добавляются к «**», если в запросе они равны нулю. Ожидается, что эти свойства следует игнорировать. Когда он отсутствует или если значение равно нулю.

Rakesh GR 22.04.2024 15:52

{ "search": { "party": { "name": null, "tour": "TourName" }, "address": { "addressLine1": "US", "postalCode": "psCode" } } } When имя равно нулю, оно добавляет AccountName: ** к выводу @Barbaros Ozhan

Rakesh GR 22.04.2024 15:54

Другие вопросы по теме