ค้นหาเว็บไซต์

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;

ตอนนี้มันทำงานตามที่คาดหวัง โพสต์นี้ช่วยให้ฉันหาวิธีแก้ปัญหาได้

บทความที่เกี่ยวข้อง