簡體   English   中英

在node.js中使用require()的奇怪JSON解析錯誤

[英]Weird JSON parsing error using require() in node.js

我有以下JSON:

{
   "request" : {
      "language" : "en",
      "title" : "placeholder",
      "year" : "2014"
   }
}

我正在嘗試使用以下代碼解析:

var json = require('../filename);

奇怪的是,我收到了SyntaxError

/home/username/code/filename:2
   "request" : {
             ^
SyntaxError: Unexpected token :
(...)

根據JSONLint,JSON完全有效。 我錯過了很明顯的東西嗎?

聽起來你制作的是.js文件,而不是.json文件。
因此,它被解析為Javascript,而不是JSON。

require()不應該用於加載JSON文件。 它僅用於加載node.js模塊,而不是數據。 根據擴展名加載數據實際上已被棄用(請參閱有關require.extensions的無數討論)。

所以加載JSON的正確方法是這樣的:

JSON.parse(require('fs').readFileSync(__dirname + '/filename', 'utf8'))

(已編輯)感謝@Aqwis注意到我

要解析JSON,請更好地使用JSON.parse,就像這些線程節目一樣

不好的做法與否,如果文件的擴展名是“JSON”而不是“json”,這將在Windows上發生失敗。 我花了一個小時才發現這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM