chooseJsonObj
chooseJsonObj 函数通过文件选择器选择本地 JSON 文件,并直接返回解析后的 JSON 对象。
语法
javascript
chooseJsonObj()参数
无参数。
返回值
Promise<Object | Array>返回解析后的 JSON 对象或数组。具体类型取决于所选 JSON 文件的内容结构。
描述
chooseJsonObj 是 chooseFile 和 file2Json 的组合封装。执行时先调用 chooseFile() 打开文件选择器,选取首个文件后通过 file2Json 以文本方式读取,最后调用 JSON.parse 将字符串解析为 JSON 对象返回。
该函数省去了手动选择、读取、解析三步操作,适合需要让用户导入 JSON 配置或数据的场景。
注意事项
- 函数固定调用
chooseFile()不传参,即不限制文件类型且为单选模式,仅返回首个文件。若需筛选.json类型请直接组合chooseFile('.json')+file2Json+JSON.parse。 - 若所选文件不是合法 JSON,
JSON.parse会抛出SyntaxError,建议调用方使用try/catch包裹。 - 返回值类型由文件内容决定,可能是对象
{}或数组[],使用前请根据实际结构处理。 - 函数依赖浏览器的文件选择与读取能力,iOS 下需 input 挂载到页面才能使用,已由
chooseFile内部处理。
示例
选择并读取 JSON 文件
带异常处理的读取
浏览器兼容性
- 函数基于
chooseFile和file2Json实现,依赖浏览器文件选择与FileReaderAPI。 JSON.parse为标准 API,所有现代浏览器均支持。- 在 iOS 下需 input 挂载到页面才可使用,已由
chooseFile内部兼容处理。
性能考虑
- 时间复杂度: 文件读取耗时取决于文件大小,
JSON.parse为 O(n),n 为字符串长度。 - 大文件警告: 函数一次性读取并解析整个文件,超大 JSON 文件可能造成内存占用过高或主线程阻塞,建议限制文件大小。
- 每次调用都会创建并销毁
input元素,开销较小可忽略。
相关函数
chooseFile- 通过文件资源管理器选择本地文件(chooseJsonObj内部调用)file2Json / json2Blob / toBase64- 文件格式转换(chooseJsonObj内部调用file2Json)downloadBlob / downloadText / downloadByUrl- 文件下载