Попытка создать карту, но заканчивается в списке в JQ - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь получить входной JSON, указанный ниже в данной выходной структуре, но я получаю структуру в виде списка вместо карты.

Входная структура:

{

      "errorMessage": null,
      "errorCode": null,
      "state": "Complete",
       "status": "Completed",
       "createdDate": "234234234234",
       "createdTime": "332432423433",

      "orderId": {
        "Order394": {
          "orderId": "Order394",
          "targetRequirements": [

            { "targetID" : "1234",
            "targetDate" : "targetDate",
              "preferenceOrder": 1,
              "matchID": "502"
            },
            { "targetID" : "1235",
            "targetDate" : "targetDate",
              "preferenceOrder": 1,
              "matchID": "503"
            }
          ],
          "username": "Arun",
          "address": "6166192",
          "Title": "Kumar"
        },
        "Order395": {
          "orderId": "Order395",
          "targetRequirements": [

            { "targetDate" : "targetDate",
           "targetID" : "1234",
              "preferenceOrder": 1,
              "matchID": "502"
            }
          ],
          "username": "Arun",
          "address": "6166192",
          "Title": "Kumar"
        }
      }
    }

Ожидаемый ответ:

{
      "errorCode": null,
      "errorMessage": null,
      "orderId": {
        "Order394": {
          "orderId": "Order394",
          "targetRequirements": [
            {
              "matchID": "502",
              "preferenceOrder": 1
            },
            {
              "matchID": "503",
              "preferenceOrder": 1
            }
          ]
        },
        "Order395": {
          "orderId": "Order395",
          "targetRequirements": [
            {
              "matchID": "502",
              "preferenceOrder": 1
            }
          ]
        }
      }
    }

Я пытался использовать JQ Query, приведенный ниже, однако это создает СПИСОК orderId, но мне нужна карта.

{ errorMessage,errorCode,  orderId :  (.orderId |                               map({    (.orderId) : {   orderId ,          targetRequirements : (.targetRequirements |              map({             preferenceOrder               ,targetID             })            )      }   }) )  }

Пример рабочего примера можно найти по адресу https://jqplay.org/s/exd2QjrS9V

Заранее спасибо.Арункумар

1 Ответ

1 голос
/ 07 марта 2019

Похоже, вы пропускаете вызов add.Добавление add к вашему jq:

{ errorMessage,
  errorCode,
  orderId:
    (.orderId
     | map({ (.orderId) :
               { orderId,
                 targetRequirements:
                   (.targetRequirements
                    | map({preferenceOrder,targetID }) ) } })
     | add ) }

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

...