iT邦幫忙

0

Postman 傳遞的 JSON 請求 Node.js 無法解析

  • 分享至 

  • xImage

各位大神好!弱弱的我自學 Node.js 又遇到問題了,其實我也不想一直跟各位挖東西都不貢獻,弱弱的我也有努力回答問題,請各位再幫我一次吧!如下的程式可秀出正確結果

var jsonData = JSON.parse ('[{"user_id":1, "article_title":"Node.js"}]');
var insertValues = [];
insertValues.push (jsonData[0].user_id, jsonData[0].article_title);
console.log (jsonData[0].article_title);

但把字串換成 req.body 就不行了,程式碼如下

var jsonData = JSON.parse (req.body);

會秀出如下的錯誤結果

Unexpected token o in JSON at position 1

但我用 console.log 看 req.body 的值是正確的,如下

[ { user_id: 1, article_title: 'Node.js' } ]

而我的 Postman JSON 格式如下

[
  {
    "user_id": 1,
    "article_title": Node.js
  }
]  

現在是因為在家自修都沒同事可問,弱弱的我就像新人一樣要資深的『帶』,之所以不直接去求職是因為弱弱的我四十歲了,這個年紀應該沒有公司願意重新訓練起了吧!

各位大神不好意思,這個問題烏龍了!我剛剛上網查詢 "Unexpected token o in JSON at position 1" 這個錯誤訊息,發現只要去掉 JSON.parse ( ) 這層轉換就行,意思就是說 "var jsonData = req.body;" 是能得到正確結果的。
不過您知道為何去掉JSON.parse就可以的原因嘛?

也就是說,您拿到的回傳格式。早就已經是 json 格式了。
自然就不需要再經過轉換
參考這篇文 https://juejin.cn/post/7112310799347449886 ,它說 JSON.parse ( )只能解析字串,如果遇到物件類型的資料就會出現我所提到的錯誤訊息 ,但大神所說的 "原本就是 JSON 格式不用加以解析" 也很有道理,受教了!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
allenlwh
iT邦高手 1 級 ‧ 2023-08-31 09:11:32

依我個人的經驗,只要是跟json有關的問題,第一個步驟先驗證json內容及格式是否有問題。
按照您提供的json

[
  {
    "user_id": 1,
    "article_title": Node.js
  }
]  

https://ithelp.ithome.com.tw/upload/images/20230831/200334933OAUKTVcK8.png

弱弱的我剛剛試過 JSON Online Validator 了,是因為 Node.js 沒加雙引號造成的,感謝大神提點唷!

我要發表回答

立即登入回答