各位前輩好
將Line post的參數使用JSON.stringify()轉成字串,得到如下字串
{
"contextPath": "",
"contentLength": 355,
"postData": {
"contents": "{\"destination\":\"U7743df08ee95a41d784ef25\",\"events\":[{\"type\":\"message\",\"message\":{\"type\":\"text\",\"id\":\"1594457\",\"text\":\"機器人\"},\"timestamp\":1640822758480,\"source\":{\"type\":\"group\",\"groupId\":\"C6a1057ca0ef4b98e4b748b\",\"userId\":\"Ue576c8aa3c01fe6c065b8ac9f4\"},\"replyToken\":\"ca44d4e70b6a403eda9a9d5\",\"mode\":\"active\"}]}",
"length": 355,
"name": "postData",
"type": "application/json"
},
"parameters": {},
"queryString": "",
"parameter": {}
}
但想將該字串轉回物件,使用JSON.parse()則會失敗
Uncaught SyntaxError: Unexpected token d in JSON at position 92
想請問該如何處理?
基本來說,透過 stringify 轉換的字串。理論上來說一定可以用 parse 轉換回來。
你無法轉換回來的原因。可能是您有對其做了什麼動作。
只是不太清楚你做了什麼處理。
把
{\"destination\":\"U7743df08ee95a41d784ef25\"
改成
{\"destination\":\"df08ee95a41d784ef25\"
試試看
如果可以
就可能是那個 U7743 惹的禍(被當成 UniCode 轉換?)
如果不可以
那就是我亂講
既然是JS
那有沒有直接用console.log(Line post);
看看他會不會印出key value出來,正常來說應該是要印得出來
再說,你把它變成json字串有沒有檢查一下他現在格式typeof()
我自己串過line bot拿到的東西我是可以用,但我是用php去寫的,這種串接我都交給後端程式去拿,讓他在伺服器處理避免被修改