【发布时间】:2020-07-20 07:27:41
【问题描述】:
我对 JavaScript 知之甚少,但我希望上传多个 JSON 文件、处理它们、将它们转换为文本、合并它们然后下载到单个 JS 文件。
我已经设法让单个文件正常工作,但是通过将内容作为 FileReader/FileReaderSync 结果中的变量传递来处理多个文件超出了我的理解。
上传输入:
TestA.json => { "name":"John", "age":30, "car":null }
TestB.json => { "name":"Bob", "age":35, "car":"toyota"}
处理:任意....但让我们说年龄加 5
下载/输出 JS文件如下:var TestA = { "name":"John", "age":35, "car":null }; var TestB = { "name":"Bob", "age":40, "car":"toyota"};
这是我必须处理的文件,但我不知道如何将输出合并到一个文件中;
https://jsfiddle.net/simid/0d9mqn7y/3/
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.2/FileSaver.min.js"></script>
<script type="text/javascript">
function encodeJSON (varJSON) {
//do something to varJSON
}
function processFiles() {
var filelist = document.getElementById('files').files;
for(var i=0; i<filelist.length; i++) {
encodeFiles(filelist[i]);
}
}
function encodeFiles(file) {
var reader = new FileReader();
reader.onload = function() {
var JSONData = JSON.parse(reader.result);
encodeJSON(JSONData);
JSONData = 'var ' + file.name.split('.')[0] + ' = ' + JSON.stringify(JSONData) + ';'
var blob = new Blob([JSONData], {type: "text/plain;charset=utf-8"});
saveAs(blob, 'encoded.js');
}
reader.readAsText(file, "UTF-8");
}
</script>
</head>
<body>
<p>JSON inputs:</p>
<p><input type="file" multiple id="files" onchange="processFiles()" /></p>
</body>
</html>
干杯
【问题讨论】:
标签: javascript json filereader