Json child在Node JS中被设置为undefined

ruarlubt  于 2023-04-11  发布在  Node.js
关注(0)|答案(1)|浏览(132)

详情

每当我运行JS文件并尝试console.log(DB.other.Clay)时,它都会打印undefined。我使用内置的Node JS模块fs,因为我被告知它在大Json文件中表现更好。当我尝试访问DB.other.Clay.buildings时,它也会抛出错误

代码
const fs = require('node:fs');

fs.readFile('./conquestDB/res.json', 'utf8', (err, data) => {
     if(err){
        console.log(err);
        return;
     }
    DB = JSON.parse(data)
    console.log(DB.other.Clay)
})
Json文件(高度压缩,原始文件超过40万行
{
  "other": {
    "Clay": {
       "walls": {...},
       "buildings": {
         "mine": 838,
         "missile_silo": 2,
         "anti_missile_wall": 611,
         "silo_pad_mk2": 8,
         "silo_pad": 8,
         "sign": 69,
         "storage": 462,
         "lab": 299,
         "house": 91,
         "camp": 594,
         "rift": 8,
         "walls": 37681,
         "fortifier": 115
       },
       "count": 61983,
       "locations": {...}
    }
  }
}

我不明白为什么我无法访问这些JSON对象,我对JavaScript中的JSON非常陌生,所以请彻底解释一下。

祝福你,FlyingPig525
8iwquhpp

8iwquhpp1#

如何调试

沿着数据的“树”往下走
从这个开始:

const fs = require('node:fs');

fs.readFile('./conquestDB/res.json', 'utf8', (err, data) => {
     if(err){
        console.log(err);
        return;
     }
    DB = JSON.parse(data)
    console.log(Object.keys(DB))
})

确保长的键列表包含“其他”
如果是,则进入下一步:

const fs = require('node:fs');

fs.readFile('./conquestDB/res.json', 'utf8', (err, data) => {
     if(err){
        console.log(err);
        return;
     }
    DB = JSON.parse(data)
    console.log(Object.keys(DB.other))
})

检查键的列表是否包括“Clay”。
我怀疑你有一个额外的层某处,你没有注意到。

相关问题