Using any awk in any shell on every Unix box:
$ cat tst.awk
BEGIN {
RS = ""
FS = "\n"
printf "["
}
{
gsub(/"/,"\\\\&")
title = $1
body = $3
for (i=4; i<NF; i++) {
body = body "\\n" $i
}
print (NR>1 ? "," : "")
print " {"
printf " \"title\": \"%s\",\n", title
printf " \"body\": \"%s\"\n", body
printf " }"
}
END {
print "\n]"
}
<p>
$ awk -f tst.awk file
[
{
"title": "A random Title 1",
"body": "1- a block of text that can contain any character\nand it also can contain multiple lines"
},
{
"title": "A random Title 2",
"body": "2- a block of text that can contain any character\nand it also can contain multiple lines"
},
{
"title": "A random Title 3",
"body": "3- a block of text that can contain any character\nand it also can contain multiple lines"
}
]