フロント側からサーバに

{"type":"flex","altText":"Flex Message","contents":{"type":"carousel","contents":[{"type":"bubble","direction":"ltr","hero":{"type":"image","url":"URL","align":"start","size":"full","aspectRatio":"1:1","aspectMode":"cover"},"footer":{"type":"box","layout":"horizontal","contents":[{"type":"button","action":{"type":"uri","label":"Button","uri":"URL2"}}]}}]}}

というObjectをAPIに使う目的で送信したいのですが、Objectはそのままpostできなかったため、一度JSON.stringfyしてからサーバにpostします。
サーバ側でconsole.log(req.body)を出力すると表示上は正常なのですが、API等で値を渡そうとすると

{\\"type\\":\\"flex\\",\\"altText\\":\\"Flex Message\\",\\"contents\\":{\\"type\\":\\"carousel\\",\\"contents\\":[{\\"type\\":\\"bubble\\",\\"direction\\":\\"ltr\\",\\"hero\\":{\\"type\\":\\"image\\",\\"url\\":\\"URL\\",\\"align\\":\\"start\\",\\"size\\":\\"full\\",\\"aspectRatio\\":\\"1:1\\",\\"aspectMode\\":\\"cover\\"},\\"footer\\":{\\"type\\":\\"box\\",\\"layout\\":\\"horizontal\\",\\"contents\\":[{\\"type\\":\\"button\\",\\"action\\":{\\"type\\":\\"uri\\",\\"label\\":\\"Button\\",\\"uri\\":\\"URL2\\"}}]}}]}}

のように大量のエスケープシークエンスがついてしまいます。
元の配列に戻すためunescape()関数を使用しても正常にならず、困っております。

知りたい点として、今自分は

  1. Objectをサーバにpostする方法を間違えている
  2. JSONをAPI等でstrとして使う方法を間違えている

どちらになるのでしょうか?
原因がどこにあるのか自分でわかっていないため、適合する内容も見つけられずに困っております。ご助言いただけると助かります。

追記
失礼しました。expressで
1)フロント側post

$.post({
  url: "/{post_path}",
  data: {post_data}
})

2)サーバ側受信

app.post("/{post_path}", function (req, res, next) {
    var { 各パラメータ } = req.body;
  APIfunction(req.body)

の様な形でやりとりしております。
APIはLINE APIでpush(Flex)を送っております。

Messaging APIリファレンス - Flex Message | LINE Developers