我在本地檔案夾中有一個 JSON 檔案,其結構如下。
{
license: "abcd",
name: "abcd",
data: [
Array of JSON Objects ....
]
}
我想訪問物件中的資料陣列并將其作為快速路由的回應發送這是我嘗試過的。
import express from "express";
import fs from "fs";
import bodyParser from "body-parser";
var app = express();
app.use(bodyParser.json());
var fileData: string = fs.readFileSync("path to json file", { encoding: 'utf-8' });
var jsonData = JSON.parse(fileData).data;
console.log(jsonData);
app.get("/getJsonData", (err, res) => {
if (err)
throw err;
res.send(JSON.stringify(jsonData));
});
app.listen("3001", () => console.log("listening at 3001"));
當我在快速路由函式之外記錄它時,它顯示正確的 json,但在函式內部,回應是 [object Object],狀態代碼為 500(內部服務器錯誤)。
我也嘗試了異步方法
var app = express();
app.use(bodyParser.json());
app.get("/getJsonData", (err, res) => {
if (err)
throw err;
fs.readFile("path to json file", (fileErr, result) => {
if(fileErr) throw fileErr;
var jsonData = JSON.parse(result.toString()).data;
res.json(jsonData);
});
});
但我得到與 [object Object] 和狀態碼 500 相同的回應。我試過res.send(JSON.stringify(jsonData))但沒有用。如何使用 Express 將我從檔案中獲取的 json 資料發送到前端?順便說一句,我為此使用 TypeScript。
uj5u.com熱心網友回復:
這條線
app.get("/getJsonData", (err, res) =>
這err不是錯誤,它應該是請求:
app.get("/getJsonData", (req, res) => {
res.send(JSON.stringify(jsonData));
});
它實際上在 express.js 的示例Hello world站點上,在那里你會看到他們使用req
https://expressjs.com/de/starter/hello-world.html
你總是得到 500 錯誤的原因是因為err,這顯然是請求,總是真實的
您也不需要對其進行字串化,您可以這樣做res.json(jsonData)
uj5u.com熱心網友回復:
如果要在快速服務器和客戶端之間發送 json 物件,則需要通過res.json(obj)其中 obj 必須明確是 JSON 物件(不能是 JSON 物件陣列)來發送資料。您可以做的只是發送陣列,只需將您的 jsonData 陣列包裝在一個括號對中,您就完成了。
let jsonData = JSON.parse(fileData).data;
res.json({ jsonData });
//or if you dont understand the above use
res.json({ jsonData: jsonData})
//which is equivalent to the above line
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481447.html
標籤:javascript 节点.js 打字稿 表示 后端
下一篇:物件可能未定義
