-- So how do I effectively merge the output of a returning clause into a single json value -- is this possible ??
Depends on what you mean by "merge"...but the most simple answer to "how do I turn multiple rows of data into a single row" is usually "by using an aggregate function and a group by clause". In this case the "json_agg()" and "json_object_agg()" functions meet the basic criteria.
Also, to do anything beyond simply returning the table constructed by the returning clause you need to move the statement into a CTE and do you work on its results.