第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

節(jié)點:無法通過 API 解析 JSON

節(jié)點:無法通過 API 解析 JSON

汪汪一只貓 2022-06-16 10:23:51
我從文件中加載 JSON 作為字符串,嘗試將其解析回 JSON 并作為響應(yīng)發(fā)送:router.get('/todos', (req,res) =>{    let todos = fs.readFile('todos.json', 'utf8',(err, data) =>{        if (err) throw err        res.send(JSON.parse(todos))     })})我的 todos.json 文件:{    "todos": [        {            "id": 1,            "text": "task number 1",            "priority": 3,            "done": false        },        {            "id": 2,            "text": "task number 2",            "priority": 3,            "done": false        },        {            "id": 3,            "text": "task number 3",            "priority": 3,            "done": false        },        {            "id": 4,            "text": "task number 4",            "priority": 3,            "done": false        },        {            "id": 5,            "text": "task number 5",            "priority": 3,            "done": false        }    ]}但是我收到此錯誤:未定義 ^SyntaxError:在 fs.readFile (/Users/mgonline/Desktop/programs/assessment/node-todo/routes/api/v1/todo.js:11:17) 的 JSON.parse () 位置 0 處的 JSON 中的意外標記 u在 FSReqWrap.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:53:3)我不知道為什么,但是當我 console.log 從文件中獲取這個字符串時,我的程序似乎通過在集合數(shù)組中的最后一個對象之后添加一個逗號來稍微改變它:{    "id": 5,    "text": "task number 5",    "priority": 3,    "done": false},據(jù)說這會引起這個錯誤。我應(yīng)該以不同的方式重寫我的 JSON 以避免沖突嗎?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

問題

您使用fs.readFile不正確。 fs.readFile將返回undefined,因為readFile是異步的。文件的內(nèi)容實際上是在data您提供的回調(diào)參數(shù)中到達的。


修理

完全刪除let todos =并調(diào)用fs.readFile(因為您不需要 的返回值fs.readFile)。


然后調(diào)用JSON.parse(data)而不是JSON.parse(todos)(因為那是文件內(nèi)容到達的地方)。


router.get('/todos', (req,res) =>{

    let todos = fs.readFile('todos.json', 'utf8',(err, data) =>{

        if (err) throw err


        res.send(JSON.parse(todos)) 

    })

})

router.get('/todos', (req,res) =>{

    fs.readFile('todos.json', 'utf8',(err, data) =>{

        if (err) throw err


        res.send(JSON.parse(data)) 

    })

})


查看完整回答
反對 回復 2022-06-16
?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

我猜,編輯器在保存時會自動添加逗號。嘗試將IDE的設(shè)置更改為在保存json文件時從數(shù)組元素中刪除逗號



查看完整回答
反對 回復 2022-06-16
?
慕容森

TA貢獻1853條經(jīng)驗 獲得超18個贊

您尚未todos在應(yīng)用程序中定義,它未定義,因此您收到錯誤消息,


正如@Sebastian Kaczmarek 所糾正的那樣,todos返回值是fs.readFile. 作為fs.readFile回報"undefined",你會得到錯誤。


使用datawhich 是腳本中包含required文件內(nèi)容的參數(shù)的名稱。


router.get('/todos', (req, res) => {

  fs.readFile('todos.json', 'utf8', (err, data) => {

    if (err) throw err

    res.send(JSON.parse(data));

  })

})


查看完整回答
反對 回復 2022-06-16
  • 3 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號