gpt4 book ai didi

javascript - 使用 adm-zip 从 zip 中读取 json 文件

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:25 25 4
gpt4 key购买 nike

我试图读取一个 zip 文件,然后在 zip 的根目录解析一个 json 文件。

json 文件称为 manifest.json,在我阅读的每个 zip 文件中都将调用它。

目前我有以下功能

function getFileContents(directory){
// reading archives
var zip = new AdmZip(directory);
var zipEntries = zip.getEntries(); // an array of ZipEntry records

zipEntries.forEach(function (zipEntry) {
if (zipEntry.entryName == "manifest.json") {
console.log('getData', zipEntry.getData());
console.log('data',zipEntry.data.toString('utf8'));
}
});
}

但是我在控制台中得到以下异常

getData <Buffer ff fe 7b 00 0a 00 20 00 20 00 22 00 62 00 75 00 69 00 6c 00 64 0
0 22 00 3a 00 20 00 22 00 34 00 2e 00 38 00 2e 00 37 00 32 00 31 00 39 00 22 00
2c 00 0a ...>

TypeError: Cannot call method 'toString' of undefined
at c:\direc\Custom_Modules\readZipFileModule\readZipFileModule.js:18:46
at Array.forEach (native)

这个我试过的背面:

function getFileContents(directory){
// reading archives
var zip = new AdmZip(directory);
var zipEntries = zip.getEntries(); // an array of ZipEntry records

zipEntries.forEach(function (zipEntry) {
if (zipEntry.entryName == "manifest.json") {
var decompressedData = zip.readFile(zipEntry);
var data = zip.readAsText(zipEntry)
console.log(JSON.parse(data));
}
});
}

如果我得到 console.log 数据:

??{
" b u i l d " : " 4 . 8 . 7 2 1 9 " ,
" b r a n c h " : " s t e p h e n " ,
" t i m e s t a m p " : " 1 5 - 0 1 - 2 0 1 4 0 9 : 0 6 : 2 7 "
}

这是文件中的正确数据,但每个字符之间没有空格。但是当我尝试解析它时,它显然会抛出一个关于“??”的错误。问号从哪里来?我不完全理解如何正确使用 adm-zip 从 nodejs 中的 zip 读取 json 文件我到底做错了什么?它不需要保存文件,只需将其数据解析为一个对象。

感谢您为此提供的所有帮助。

最佳答案

也许这为时已晚......但我遇到了同样的问题。您可以使用 zipEntry.getData().toString('utf8')

关于javascript - 使用 adm-zip 从 zip 中读取 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21234862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com