HTML5实现本地JSON文件的读写

参考:

使用HTML5来实现本地文件读取和写入  (FileReader读取json文件,FileSaver.js保存json文件)

w3school <input>标签

FileReader WebAPI接口

FileSaver.js下载地址

FileSaver.js介绍

JS创建、写入、读取本地文件(txt)   (ActiveXObject 这玩意根本不能用,IE10 和 Chrome都试了)

HTML 5中的文件处理之File Writer API  (FileSaver和FileWriter都是不能直接修改保存指定文件的,只能生成一个文件,然后浏览器以"下载"的形式保存)

一、读取本地JSON文件

1. 首先使用标签<input>创建一个读取的按钮

2. 然后选择本地的json文件后使用FileReader读取json文件的内容,此时读取的结果是字符串

3. 将读取的结果字符串使用JSON.parse转为json格式,之后再使用

    <div>
	<input type="file" id="files"/>
   </div>

    <script>
        var inputElement = document.getElementById("files");
        inputElement.addEventListener("change", handleFiles, false);
        function handleFiles() {
           var selectedFile = document.getElementById("files").files[0];//获取读取的File对象
           var name = selectedFile.name;//读取选中文件的文件名
           var size = selectedFile.size;//读取选中文件的大小
           console.log("文件名:"+name+"大小:"+size);
           var reader = new FileReader();//这里是核心!!!读取操作就是由它完成的。
            reader.readAsText(selectedFile);//读取文件的内容

            reader.onload = function(){
                console.log("读取结果:", this.result);//当读取完成之后会回调这个函数,然后此时文件的内容存储到了result中。直接操作即可。

                console.log("读取结果转为JSON:");
                let json = JSON.parse(this.result);
                console.log(json.name);
                console.log(json.age);
            };

        }
    </script>

实际操作步骤

使用<input>标签创建的按钮如下图

点击“选择文件”,打开本地test.json文件,test.json内容如下图:

读取后console.log输出结果如下:

二、JSON文件的保存

网上搜了一圈,有个new ActiveXObject("Scripting.FileSystemObject");方法,但是没有什么用。

使用下面的代码进行JSON保存

1. 引入FileSaver.js文件 (可以从文章开头那去找下载链接)

2. 使用<input>标签创建一个保存按钮

2. 点击<input>标签保存时,调用saveAs方法保存json内容

    <script type="text/javascript" src="./js/FileSaver.js" charset="utf-8"></script>

<input type="button" id="export" value="保存"/>

    <script>
     var button = document.getElementById("export");
     button.addEventListener("click", saveHandler, false);
     function saveHandler(){
          let data = {
              name:"hanmeimei",
              age:88
          }
          var content = JSON.stringify(data);
          var blob = new Blob([content], {type: "text/plain;charset=utf-8"});
          saveAs(blob, "save.json");
     }

    </script>

  

实际操作步骤

<input>标签创建保存按钮

浏览器提示下载save.json文件

下载保存后的文件

三、疑问

1. 为什么保存的时候不能直接保存打开的json文件,还需要"下载"这一步。

我没有去深究,估摸着这是安全权限问题,因为如果浏览器能任意修改你电脑上的文件,那是比较可怕的。

原文地址:https://www.cnblogs.com/gamedaybyday/p/9906542.html

时间: 2024-10-13 08:23:21

HTML5实现本地JSON文件的读写的相关文章

访问本地json文件因跨域导致的问题

我使用jquery的getJSON的方法获取本地的json文件,并进行操作,获取json 数据代码如下: $.getJSON("invite_panel.json",function(data){//获取json文件中的数据 $.each(data, function (index, obj) //对json数据进行遍历 } 因我获取的是本地的 json 文件数据,因此导致了跨域问题,使得大部分主流浏览器报错,并无法获取本地的 json 文件,使用chrome浏览器查看错误如下: 通过

iOS国家城市选择器 读取本地json文件

最近在做的产品有这么个需求,读取本地json文件中的国家和城市信息,显示到pickerview上,在网上查了一下,发现没有什么合适的可用资源,所以就自己写了一个简单的DEMO. 效果图: 读取本地json的方法如下: + (NSMutableArray *)getCityData { NSArray *jsonArray = [[NSArray alloc]init]; NSData *fileData = [[NSData alloc]init]; NSUserDefaults *UD = [

将Chrome调试器里的JavaScript变量保存成本地JSON文件

我写了一个系列的文章,主要用来搜集一些供程序员使用的小工具,小技巧,帮助大家提高工作效率. 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理器的替代者-Process Explorer 介绍一个强大的磁盘空间检测工具Space Sniffer 如何在电脑上比较两个相似文件的差异 程序员工作效率提升系列-推荐一个JSON文件查看和修改的小工具 我们在Chrome开发者工具的Console

Vue-cli3.0项目下axios请求本地json文件的数据

1. Vue-cli3.0项目节省了很多文件,比如讲vue-cli3.0之前版本的build/dev-server.js配置放在了vue.config.js中. 2. 在Vue-cli3.0项目的vue.config.js或vue-cli3.0之前版本的build/dev-server.js中配置: const express = require('express')const app = express() var singer = require('./src/db/data/singer.

[Unity3D] 关于txt,xml,json文件的读写,及外部文件(夹)的创建

转载自贴吧:http://tieba.baidu.com/p/2825006787 一.关于txt纯文本的读写 其实.txt,.xml,.json这类文件都属于文本文件,类似的还有.lrc歌词文件,.ini配置文件,.reg注册表文件等等,这类文件所储存的内容都是文本,只是各自有它们自己的格式,便于某些时候专用识别,所以读取txt文本是最基础的文本解析. 静态内部读取txt文本: 这是最简单的方式,建立TextAsset,直接把文本文件拖上去,就可以用了,public TextAsset Txt

如何读取一个本地Json文件并查询该文件展示其内容

我前一段时间在我的博客里写了一篇文章"如何在QML应用中读写文件",那篇文章是介绍如何使用C++来读取文件的.那种方法是一个比较通用的方法.但是对于有些应用来说,我们可以通过配置JSON来创建我们的UI,或者对不同的平台进行配置,而不用写一个单独的设置文件来做这件事.那么我们如何不需要通过C++的方法来读取Json文件呢? 我们可以使用我们的SDK创建一个最基本的QML应用.为了能够读取Json文件,我们创建一个叫做"jsonparser.js"的文件: /* Ba

vue.js学习笔记(二):如何加载本地json文件

在项目开发的过程中,因为无法和后台的数据做交互,所以我们可以自建一个假数据文件(如data.json)到项目文件夹中,这样我们就可以模仿后台的数据进行开发.但是,如何在一个vue.js 项目中引入本地的json文件呢,下面就将步骤贴出来.(此时项目是由webpack打包而成). 整个项目是由webpack打包而成,具体步骤上网查找.具体项目结构如下: 1:我们找到bulid>dev-server.js,然后打开 2:在里面加入这段代码. var app = express() var appDa

读取本地Json文件

//读取Json文件  地区 //将文件拖到本地  获取json数据 //获取json文件路径 NSString *pathArea=[[NSBundle mainBundle] pathForResource:@"area" ofType:@"json"]; //==Json数据 NSData *dataArea=[NSData dataWithContentsOfFile:pathArea]; //==JsonObject //将data 转换成json数据 N

新版vue获取本地json文件数据

现在升级后的vue没有dev-server.js和dev-client.js,可以通过以下方式模拟后台数据: 1.找到webpack.dev.conf.js这个文件,在const portfinder = require('portfinder')后面添加以下代码: 1 const express = require('express') 2 const app = express()//请求server 3 var appData = require('../data.json')//加载本地