小程序新增了云开发功能,对于个人开发者是个利好消息。可以省去购买服务器,购买域名以及繁琐配置等步骤,减轻了开发者的负担。至于如何云开发我就不在这里赘述了,请移步微信小程序云开发官方文档,说的很清楚。这篇文章主要跟大家聊一次云开发上传json文件遇到的坑。小程序官方为我们提供了官方API进行数据库操作上传数据,也为我们提供了手动后台上传数据文件的功能。代码方式插入数据//初始化 wx.cloud.init({ env: '这里填数据库环境,类型为字符串' }) const db = wx.cloud.database() //插入单条数据 db.collection('cityInfo').add({ // data 字段表示需新增的 JSON 数据 data: { name: "小明", sex: "man", age: "18", }, success: function (res) { // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id console.log(res) } })

至于批量插入数据官方文档没有说,如果按后台数据库插入的逻辑,一般小批量可以用循环,大量数据得用事务处理了。所以用上面用代码上传的方法显然麻烦且不高效。好在官方为我们提供手动上传文件的方法。后台手动上传文件点击开发者工具模拟器右上角的“云开发”按钮进入云开发后台,然后点击数据库,添加集合(创建表名)。创建好后可以点击“+添加记录”,添加单条记录。也可以点击旁边的“+导入”,导入json后缀的文件也可以是CSV表格数据的文件。做过后台和移动端的都比较熟悉json,这里我们讲下怎么上传json。

图1-云开发数据库模块有人会说上传json有什么好聊的,如果单单只是上传json文件确实没什么好讲的,但是我们不做处理上传是会报错的。首先看下官方说明。

图2-文件格式什么意思呢?也就是每条数据应该用花括号{}包裹着,花括号里是键值对。假如root首层是方括号[]形式的数据包裹着的是不行的。上传是会报错。为了让大家更直观的了解,我们分析下数据结构。[ { "name":"小明", "age":"18", "sex":"男" }, { "name":"小红", "age":"19", "sex":"女" }, { "name":"小黑", "age":"20", "sex":"男" }, ...]

像这种数据结构,数组里面每组数据都是一个字典键值对,按照上图的规则,我们只需要首先删除首尾的这组方括号[],然后替换每组花括号{}后面的逗号,就行了。数据少我们可以手动删除,数据多了几百上千条数据,手动删除肯定不现实。window电脑可以用记事本,mac电脑可以用文本编辑打开,然后用查找替换的方式删除每组数据后的逗号。

图3-打开json文件

因为json数据结构的特殊,不是只有每组数据间用逗号隔开,每组数据的每个键值对也是用逗号隔开的,所以我们不能直接把逗号替换为空格,而是应该把花括号逗号一起替换为空格。

图4-查找替换前

图4-替换后这种数据处理只适合上图这种数据结构,假如有多层数组嵌套就不适应了,因为我们的目的是只替换最外层每组数据间的逗号而这样会破坏里层的数据结构,导致出错。

下篇文章我会写一篇用官方控件picker实现省市区三级联动的文章,会用到多层数组嵌套。我是直接把整个json文件里的数据作为一组数据上传的,一次请求所有数据,返回所有数据后在小程序里处理。这样做的好处只要一次请求就能得到所有数据,缺点就是数据量大的话耗时操作是有高延迟的,不能想第一种数据结构一样上传到云数据库后是一条一条的数据可以用SQL语句条件查询。[ { "citys":[ { "areas":[ { "code":"440303", "name":"罗湖区" }, { "code":"440304", "name":"福田区" }, ... ], "code":"440300", "name":"深圳市" }, ... ], "code":"440000", "name":"广东省" }, ...]

这种数据结构显然不好去替换,应该在存数据的时候处理好。如果你要上传整个json文件为一组数据,这样直接上传也是不对的,还是那个规则要在数组外包裹一层花括号{},比如这样:{ "data":[ { "citys":[ { "areas":[ { "code":"440303", "name":"罗湖区" }, { "code":"440304", "name":"福田区" }, ... ], "code":"440300", "name":"深圳市" }, ... ], "code":"440000", "name":"广东省" }, ... ] }

处理完后就可以在云开发后台上传json文件了。下面介绍一种.plist文件转json的方法,因为很多写iOS程序的项目里可能有现成的plist文件数据,但是小程序不支持plist文件的上传,所以我们要转换一下。双击plist文件可以看到清楚的数据分层结构:

图5-plist文件可视化结构把plist文件用Xcode在iOS项目中打开,鼠标右击要打开的文件、选择Open As、点击Source Code(如你的mac安装了sublime也可以直接用它打开就直接显示为代码形式了)。

图6-Xcode中用代码形式打开

图7-Source Code形式打开后用代码形式打开后是类似于xml形式的节点树形结构,我们Com + A、Com + C全选复制它们,然后打开http://json2plist.sinaapp.com/,这是一个plist和json互转的工具网站,打开后选择顶部的“Plist -> JSON ”,然后把复制的plist代码粘贴在输入框中,点击“Convert”按钮,等待一会就完成plist转json的工作了。复制json代码,把其粘贴在新建的json文件中,按小程序的格式要求做一些相应处理后保存,就可以上传到小程序云开发后台了。下面附上处理后的json数据cityDataArr.json,直接上传到云数据库即可。未处理的plist文件cityDataArr.plist也一并附上 。上面只是我的个人经验,希望能帮到有需要的朋友,谢谢。

mysql导入微信小程序云开发_微信小程序-云开发数据库上传json文件相关推荐

  1. mysql文件头标记_通过文件头准确识别PHP上传的文件类型 ( 一 )

    /** * 通过文件名,获得文件类型* * @version 0.1 * $filename="d:/1.png";echo cFileTypeCheck::getFileType ...

  2. java 文件下载方法_【工具类】Java后台上传下载文件的几种方式

    /** * 将本地照片上传至腾讯云服务上 */ public void uploadImage(String localImagePath) throws Exception { // 1.将订单照片 ...

  3. 使用elementui实现表单上传功能_使用ElementUI中的upload组件上传Excel文件

    最初使用该组件实现图片上传是没有问题的,前后端配合,最终实现想要的效果,组件使用过代码如下: 将文件拖到此处,或点击上传 现在改为使用该组件实现Excel文件上传,组件的使用几乎是不变的,代码如下: ...

  4. python文件拷贝并校验_初级版python登录验证,上传下载文件加MD5文件校验

    importosimportjsonimportsocketimportstructimporthashlib#import time deflogin(): usr= input('请输入用户名:' ...

  5. java 上传文件编码_(java)有什么办法把MultipartFile上传的文件转为utf-8的编码吗

    [Java] 纯文本查看 复制代码import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExc ...

  6. 微信小程序用python语言开发_微信小程序语音识别开发过程笔记

    由于业务需求,需要使用微信小程序语音识别的功能,查找了好多发难,也踩了好多坑,把过程记录一下,或许会帮助到需要的朋友. 业务需求: 在小程序中识别用户语音输入的命令 业务环境和关键技术: 1.小程序: ...

  7. 微信小程序云函数构建npm,找不到node_modules以及后续出现上传所有文件,并没有上传node_modules的文件问题

    最近研究下微信小程序云函数,在构建npm的时候困扰了很久,总是提示找逼到node_modules,之前一直也没接触过nodejs,不想购买服务器,选择尝试下云开发. 出现这个错误在网上找了很多,都没找 ...

  8. 微信小程序-从相册获取图片,视频 使用相机拍照,录像上传+服务器(nodejs版)接收

    在本文 微信小程序-从相册获取图片 使用相机拍照 本地图片上传之前需要看看 微信小程序-获取用户session_key,openid,unionid - 后端为nodejs 代码封装是在上文添加的. ...

  9. 微信小程录制视频上传服务器,微信小程序-从相册获取图片,视频使用相机拍照,录像上传+服务器nodejs版接收-微信小程序视频上传功能-微信小程序视频上传...

    在本文微信小程序-从相册获取图片使用相机拍照本地图片上传之前需要看看微信小程序-获取用户session_key,openid,unionid-后端为nodejs代码封装是在上文添加的.本文知识点:1. ...

最新文章

  1. IOS怎么判断网络连接
  2. VMware-workstation-6.0 安装系统前必须映射光驱盘符
  3. 基于eclipse创建android的helloworld工程
  4. 五邑大学专插本c语言试题_2019广东专插本各专业报考、录取人数、录取分数及平均分(二)...
  5. The directory '*' or its parent directory is not owned by the current user
  6. java学习(112):simpledateformat进行格式化
  7. aix oracle 10.2.0.1 升级 10.2.0.4,AIX Oracle RAC 升级到10.2.0.4.0要特别注意的问题 - 爱肯的专栏 ......
  8. PCFG中inside和outside算法详解
  9. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_06.入门案例的流程总结
  10. mysql 编译安装详解_MySQL编译安装详解
  11. 技嘉B85升级BIOS并安装Win11
  12. “新政”不断的智慧城市,如何安全迎接新变革?
  13. K13318 破译信息
  14. 一个bug看一天,写代码像cxk
  15. 文件夹删不掉,显示有文件打开怎么办
  16. 简单盘点游戏开发引擎
  17. 与君初相识之Linux与Java SE
  18. Nginx主要用来干什么
  19. 育润多维发力慈善领域,勇抗企业公益大旗
  20. 为什么选择DCT而不是DFT

热门文章

  1. 如何评价架构的优劣(转)
  2. 今日头条自媒体怎么快速涨粉呢?利用这个方法,涨粉超快
  3. SEO歪解:SEO与厨师的联想
  4. 命令行参数输入特殊字符
  5. 解决MAC下MySQL忘记初始密码的方法
  6. 国外推广必备:国际知名APP网站APP论坛列表
  7. 布隆,牛逼!布谷鸟,牛逼!
  8. 前端js经典面试题目
  9. 测绘专业计算机编程要求,关于一些测绘圈子的信息,你需要了解!
  10. 面试的时候我为什么会紧张