json 如何校正这种颠簸变换

olqngx59  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(76)

我有一个输入JSON,如下所示。

{
  "trackingNumber": "1ZEA83550362028861",
  "localActivityDate": "20210324",
  "localActivityTime": "183500",
  "scheduledDeliveryDate": "20220525",
  "actualDeliveryDate": "20220729",
  "actualdeliveryTime": "183500",
  "gmtActivityDate": "20210324",
  "gmtActivityTime": "223500",
  "activityStatus": {
    "type": "G",
    "code": "OR",
    "description": "Origin Scan"
  },
  "activityLocation": {
    "city": "RANDALLSTOWN,",
    "stateProvince": "MD",
    "postalCode": "21133",
    "country": "US"
  }
}

我已经为这个JSON编写了一个震动转换

[
  {
    "operation": "shift",
    "spec": {
      "trackingNumber": "transformedPayload.trackingInfo",
      "localActivityDate": "tmp_Date",
      "localActivityTime": "tmp_Time",
      "scheduledDeliveryDate": "tmp_App",
      "actualDeliveryDate": "tmp_Del_Date",
      "actualdeliveryTime": "tmp_Del_Time",
      "activityStatus": {
        "type": "transformedPayload.events.type",
        "code": "transformedPayload.events.statusCode",
        "description": "transformedPayload.events.statusDescription"
      },
      "activityLocation": {
        "city": "transformedPayload.address.city",
        "stateProvince": "transformedPayload.address.state",
        "postalCode": "transformedPayload.address.postalCode",
        "country": "transformedPayload.address.country"
      }
    }
  },
  {
    "operation": "modify-default-beta",
    "spec": {
      "tmp_Year": "=substring(@(1,tmp_Date),0,4)",
      "tmp_Month": "=substring(@(1,tmp_Date),4,6)",
      "tmp_Day": "=substring(@(1,tmp_Date),6,8)",
      "tmp_Hours": "=substring(@(1,tmp_Time),0,2)",
      "tmp_Minutes": "=substring(@(1,tmp_Time),2,4)",
      "tmp_Seconds": "=substring(@(1,tmp_Time),4,6)",
      "timeStamp": "=concat(@(1,tmp_Year),'-',@(1,tmp_Month),'-',@(1,tmp_Day),'T',@(1,tmp_Hours),':',@(1,tmp_Minutes),':',@(1,tmp_Seconds),'Z')",
      "tmp_App_Year": "=substring(@(1,tmp_App),0,4)",
      "tmp_App_Month": "=substring(@(1,tmp_App),4,6)",
      "tmp_App_Day": "=substring(@(1,tmp_App),6,8)",
      "appointmentTime": "=concat(@(1,tmp_App_Year),'-',@(1,tmp_App_Month),'-',@(1,tmp_App_Day))",
      "tmp__Del_Year": "=substring(@(1,tmp_Del_Date),0,4)",
      "tmp_Del_Month": "=substring(@(1,tmp_Del_Date),4,6)",
      "tmp_Del_Day": "=substring(@(1,tmp_Del_Date),6,8)",
      "tmp_Del_Hours": "=substring(@(1,tmp_Del_Time),0,2)",
      "tmp_Del_Minutes": "=substring(@(1,tmp_Del_Time),2,4)",
      "tmp_Del_Seconds": "=substring(@(1,tmp_Del_Time),4,6)",
      "deliveryTime": "=concat(@(1,tmp__Del_Year),'-',@(1,tmp_Del_Month),'-',@(1,tmp_Del_Day),'T',@(1,tmp_Del_Hours),':',@(1,tmp_Del_Minutes),':',@(1,tmp_Del_Seconds),'Z')"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "tmp_*": ""
    }
  }
]

这会将数据转换为这种格式。

{
  "transformedPayload" : {
    "trackingInfo" : "1ZEA83550362028861",
    "events" : {
      "type" : "G",
      "statusCode" : "OR",
      "statusDescription" : "Origin Scan"
    },
    "address" : {
      "city" : "RANDALLSTOWN,",
      "state" : "MD",
      "postalCode" : "21133",
      "country" : "US"
    }
  },
  "timeStamp" : "2021-03-24T18:35:00Z",
  "appointmentTime" : "2022-05-25",
  "deliveryTime" : "2022-07-29T18:35:00Z"
}

我需要在转换中做什么更改,以便时间戳、约会时间和交货时间也嵌套在transformedPayload下,即它看起来像这样(正确的格式)。

{
  "transformedPayload" : {
    "trackingInfo" : "1ZEA83550362028861",
    "events" : {
      "type" : "G",
      "statusCode" : "OR",
      "statusDescription" : "Origin Scan"
    },
    "address" : {
      "city" : "RANDALLSTOWN,",
      "state" : "MD",
      "postalCode" : "21133",
      "country" : "US"
    },
    "timeStamp" : "2021-03-24T18:35:00Z",
    "appointmentTime" : "2022-05-25",
    "deliveryTime" : "2022-07-29T18:35:00Z"
  }
}

这是我第一次做震动转换,所以我对如何解决这个问题感到困惑。任何帮助都很感激。

42fyovps

42fyovps1#

你已经如此接近解决方案,我可以提供以下规格类似于你想要的输出:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "tsY": "=substring(@(1,localActivityDate),0,4)",
      "tsM": "=substring(@(1,localActivityDate),4,6)",
      "tsD": "=substring(@(1,localActivityDate),6,8)",
      "tsH": "=substring(@(1,localActivityTime),0,2)",
      "tsMi": "=substring(@(1,localActivityTime),2,4)",
      "tsS": "=substring(@(1,localActivityTime),4,6)",
      "timeStamp": "=concat(@(1,tsY),'-',@(1,tsM),'-',@(1,tsD),'T',@(1,tsH),':',@(1,tsMi),':',@(1,tsS),'Z')",
      "aTY": "=substring(@(1,scheduledDeliveryDate),0,4)",
      "aTM": "=substring(@(1,scheduledDeliveryDate),4,6)",
      "aTD": "=substring(@(1,scheduledDeliveryDate),6,8)",
      "appointmentTime": "=concat(@(1,aTY),'-',@(1,aTM),'-',@(1,aTD))",
      "dTY": "=substring(@(1,actualDeliveryDate),0,4)",
      "dTM": "=substring(@(1,actualDeliveryDate),4,6)",
      "dTD": "=substring(@(1,actualDeliveryDate),6,8)",
      "dTH": "=substring(@(1,actualdeliveryTime),0,2)",
      "dTMi": "=substring(@(1,actualdeliveryTime),2,4)",
      "dTS": "=substring(@(1,actualdeliveryTime),4,6)",
      "deliveryTime": "=concat(@(1,dTY),'-',@(1,dTM),'-',@(1,dTD),'T',@(1,dTH),':',@(1,dTMi),':',@(1,dTS),'Z')"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*Number": "&(0,1)Info",
      "activityStatus": {
        "*": "events.&"
      },
      "activityLocation": {
        "*": "address.&"
      },
      "timeStamp": "&",
      "appointmentTime": "&",
      "deliveryTime": "&"
    }
  }
]

相关问题