想将数据生成一个json文件应当怎么写?

看了官方文档,使用了里面的存储数据的方式,应当还要一个创建json文件和将内容写入该文件的部分。是直接按照js的方式写吗?有没有类似的可以参考一下?

1赞

先生成个js对象
let jsObj = {};
然后设置属性
jsObj.a = 1;
jsObj.b = 2;

然后
let jsObjStr = JSON.stringify(jsObj);
(可以对jsObjStr做些处理)
然后保存

cc.sys.localStorage.setItem(“picdata”,JSON.stringify(this.picdata));

我再存储的过程中将其序列化了的,我是希望它能存储成一个可视的文件,而且在下一次打开这个程序的时候能够依据这个文件加载。或者应该换一种问法?这样存储的数据是存储在哪里呢?是暂时的存储吗

存在数据库里(持久的),在使用的地方getitem出来就可以了 (JSON.parse(jsonstr))

谢谢!因为我的程序是每次从0开始,所以让我误以为存储不是暂时的。刚刚在onload里尝试了一下发现是始终存储的。

想问一下就是,我新存储的数据会覆盖掉之前的数据,这个应当怎么处理呢!

那你的需求是什么呢?
同一个key,如果是添加,就先取出来,合并再存,
如果不是同一个key,就分开存
cc.sys.localStorage.setItem(“picdata1”,JSON.stringify(this.picdata));
cc.sys.localStorage.setItem(“picdata2”,JSON.stringify(this.picdata));

这是最开始的读取,然后后面再进行操作就对picdata操作,再存储picdata,这种情况就会被替代掉。都是同一个key,picdata,应当如何合并呢?再初始化一个对象赋给它bbb吗

而且现在还有一个需求是我要把这些数据生成配置文件发给服务端,再由服务端发给另外一个程序解析,实际上还是需要写进一个json文件,ccc没有api可以创建json然后直接将数据写入吗

这就相当于合并了,你取出来,修改后,再存,数据当然也是你最新修改的了,因为存的key是同一个,难道你想存多份?

你试试这个接口writeStringToFile,也许你要的是这个

谢谢!我在尝试一下!麻烦你了QAQ

用FileSaver.js 方便又快捷
下载地址https://github.com/eligrey/FileSaver.js
使用
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”);

1赞