ObjectをJSON.stringfyしてpostするとエスケープシークエンスがつき、使用できなくなる
フロント側からサーバに
{"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()関数を使用しても正常にならず、困っております。
知りたい点として、今自分は
- Objectをサーバにpostする方法を間違えている
- 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)を送っております。