首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用adm-zip从zip中读取json文件

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

Stack Overflow用户
提问于 2014-01-20 21:01:56
回答 2查看 2.5K关注 0票数 4

我正在尝试读取zip文件,然后解析zip根目录下的json文件。

json文件名为manifest.json,在我读到的每个压缩文件中都会这样叫它。

目前我有以下函数

代码语言:javascript
复制
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')); 
        }
    });
}

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

代码语言:javascript
复制
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)

在后面我试过了:

代码语言:javascript
复制
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操作,我会得到:

代码语言:javascript
复制
??{
     " 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文件到底做错了什么?它不需要保存文件,只需将数据解析为对象即可。

感谢你对此的所有帮助。

EN

回答 2

Stack Overflow用户

发布于 2016-04-04 23:22:58

也许这已经太迟了。但我也有同样的问题。您可以使用zipEntry.getData().toString('utf8')

票数 3
EN

Stack Overflow用户

发布于 2014-01-21 16:27:10

解决了这个问题。

这是power shell脚本生成json文件,然后将其写入脚本的方式。

恐怕我没有更多的信息,因为我既没有写原始的power shell脚本,也没有修改过的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21234862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档