I've a json file which has ${date1} and ${date2} in some context. Passing this JSON file to an weburl wherein I've defined above variables. Will that work?
Shell:
#!/bin/sh
# Convert formating.
date1=$(date +'%d-%^h-%Y')
date2=$(date --date='tomorrow' +'%d-%^h-%Y')
echo $date1
echo $date2
curl -H "Content-Type: application/json" -d @patchingJsonData.json <some weburl>
JSON:
"items": [
{
"type": "TextBlock",
"wrap": true,
"text": "Data here - ${date1} 18:30:00 to ${date2} 01:30:00"
},
I suggest you use a tool like xidel to properly prepare your JSON, which you can then use for Curl, or again Xidel.
With date
:
$ xidel -se 'serialize({"items":array{{"type":"TextBlock","wrap":true,"text":"Data here - '$(date +'%d-%^h-%Y')' 18:30:00 to '$(date --date='tomorrow' +'%d-%^h-%Y')' 01:30:00"}}},{"method":"json"})'
$ xidel -se '
serialize(
{
"items":array{
{
"type":"TextBlock",
"wrap":true,
"text":"Data here - '$(date +'%d-%^h-%Y')' 18:30:00 to '$(date --date='tomorrow' +'%d-%^h-%Y')' 01:30:00"
}
}
},
{"method":"json"}
)
'
With XPath functions:
$ xidel -se 'serialize({"items":array{{"type":"TextBlock","wrap":true,"text":concat("Data here - ",format-date(current-date(),"[D01]-[MN,*-3]-[Y]")," 18:30:00 to ",format-date(current-date() + duration("P1D"),"[D01]-[MN,*-3]-[Y]")," 01:30:00")}}},{"method":"json"})'
$ xidel -se '
serialize(
{
"items":array{
{
"type":"TextBlock",
"wrap":true,
"text":concat(
"Data here - ",
format-date(current-date(),"[D01]-[MN,*-3]-[Y]"),
" 18:30:00 to ",
format-date(current-date() + duration("P1D"),"[D01]-[MN,*-3]-[Y]"),
" 01:30:00"
)
}
}
},
{"method":"json"}
)
'
Output in both cases:
{"items":[{"type":"TextBlock","wrap":true,"text":"Data here - 17-APR-2021 18:30:00 to 18-APR-2021 01:30:00"}]}
$ xidel -se '
serialize(
[...]
)
' | curl -H "Content-Type: application/json" -d@- "<some weburl>"
$ eval "$(xidel -se '
json:=serialize(
[...]
)
' --output-format=bash)"
$ curl -H "Content-Type: application/json" -d "$json" "<some weburl>"
$ xidel -s \
-H "Content-Type: application/json" \
-d '{serialize([...])}' \
"<some weburl>" \
-e '$raw'
$ xidel -se '
x:request({
"headers":"Content-Type: application/json",
"post":serialize(
[...]
),
"url":"<some weburl>"
})/raw
'