node.js - นำเข้าอาเรย์จากไฟล์ JSON ไปยังไฟล์ Typescript
ฉันมีไฟล์ JSON ซึ่งมีอ็อบเจ็กต์อาร์เรย์ดังนี้:
[
{
"VergiNo": "XXXXXXX"
},
{
"VergiNo": "YYYYYY"
},
{
"VergiNo": "ZZZZZZ"
}
]
และฉันนำเข้าไฟล์ JSON นี้ไปยังไฟล์ Typescript ของฉัน
import * as firmalar from "../firmalar.json";
const firmaPromises = firmalar.map((firma) => firma.VergiNo + "XYZ");
โค้ดข้างต้นไม่เกิดข้อผิดพลาดทางไวยากรณ์ แต่เมื่อฉันเรียกใช้แอปพลิเคชันและดีบัก ม็อบเจ็กต์ firmalar จะถูกมองว่าเป็นอ็อบเจ็กต์ไม่ใช่อาเรย์ ดังนั้นมันจึงไม่สามารถประมวลผลเมทอด map ได้
มีอะไรผิดพลาดที่ฉันกำลังทำอยู่ที่นี่หรือเปล่า?
คำตอบ #1
ในการนำเข้าข้อมูล JSON คุณควรใช้:
import firmalar from "../firmalar.json";
สิ่งนี้จะนำเข้ามาโดยไม่เปลี่ยนแปลง และคุณจะได้อาเรย์
เมื่อคุณทำการนำเข้าด้วย * as firmalar มันจะพยายามแปลง JSON เป็นโมดูล ซึ่งเป็นชนิดของ Object เมื่อคุณตรวจสอบมันคุณจะเห็นว่ามีตัวเข้าถึงแบบ Object ดังนั้น firmalar[0] จะทำงาน แต่ firmalar.length จะไม่ทำงาน
คำตอบ #2
ท้ายที่สุดฉันก็ใช้ require() เพื่อดึง JSON และแปลงเป็นวัตถุของฉันหลังจากนั้นแบบนี้:
// eslint-disable-next-line @typescript-eslint/no-var-requires
const firmalar = require("./firmalar.json");
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const firmalarArray: { VergiNo: string }[] = firmalar;
ตอนนี้มันทำงานตามที่คาดหวัง โพสต์นี้ช่วยให้ฉันหาวิธีแก้ปัญหาได้
