JSON数据和Table的相互转换
本文由按键学院提供技术支持
按键学院交流①群(1群已满):376122403
按键学院交流②群(2群):372671254
按键学院交流③群(3群):170084238
【按键学院】安卓课程(115768679)
安卓按键又新增给力的命令啦~~~ 这次的命令是用来在JSON和Table数据之间的转换的。熟悉lua语言的同学知道,lua语言里有种Table数据类型功能很强大,就相当于按键精灵里的数组的增强版,在lua里很多功能的实现都需要依靠Table数据才行。安卓按键的MQ语言虽然是基于lua的,但是之前一直不支持Table类型数据。 但是现在可以支持啦,可以支持定义一个表,并输出key值,同时还可以支持把JSON数据格式转换成Table类型的数据。今天我们就来了解下具体的操作 |
要想会用这两个新增的命令,就得要先了解下Table类型数据是个什么样的东西。前面说过了,它就是数组的增强版本。用法比数组更加的灵活。
我们先来看下Table数据的基础结构:
- dim a="k2"
- Dim v3 = "i am v3"
- //定义table(表),table是一种数据类型,可以把其他类型的变量重新定义为table;key可以是字符串、变量、数值等
- Dim t= {"k1":1, a:true, 3.14:v3,"k":{"k3":3,"k4":4}}
复制代码其中
{"k1":1, a:true, 3.14:v3,"k":{"k3":3,"k4":4}}这个就是Table数据(也称为表)的常见结构
表的key可以是各种数据,可以是
字符串(需加引号)、
变量(需要先定义一个值)、
整数型,也可以是一个
新的表(也就是嵌套表)。整个表需要用大括号括起来
key的赋值使用冒号来赋值,不同key值之间使用逗号分隔开。如果key值也是一个表的话,需要用大括号括起来。
想要输出表内的key值的内容也简单:
- dim a="k2"
- Dim v3 = "i am v3"
- Dim t= {"k1":1, a:true, 3.14:v3,"k":{"k3":3,"k4":4}}
- TracePrint t["k1"]
- TracePrint t[a]
- TracePrint t[3.14]
复制代码如果key值也是一个表的话,那需要先把这个key的值赋值成一个新的表,然后才能继续输出
- dim a="k2"
- Dim v3 = "i am v3"
- Dim t= {"k1":1, a:true, 3.14:v3,"k":{"k3":3,"k4":4}}
- Dim t1 = t["k"]
- TracePrint t1["k3"]
复制代码同时也可以用For Each命令来遍历输出一个表里的值(如果key值是一个表,那会返回unknown)
- Dim k, v
- For Each k, v In t //可以这样变量
- TracePrint "key名称是: " & k
- TracePrint "key的值是: " & v
- Next
复制代码JSON 是一种变成语言里比较通用的数据结构,他和表类似,可以存放各种数据。常接触网络请求的同学一定不会陌生,一些网络请求返回的数据就是JSON格式。
JSON和Table 样子虽然相似,但是还是不能直接通用的,所以需要使用命令来转换下
命令名称 | Encode.TableToJson |
命令功能 | 将Table 表转换成对应的Json字符串 |
命令参数 | 键值表:字符串型,任意有效的键值表字符串 |
返回值 | Json字符串:字符串型,返回对应键值表转成的json字符串 |
命令名称 | Encode.JsonToTable |
命令功能 | 将Json字符串转换成对应的Table 表 |
命令参数 | Json字符串:任意有效的Json字符串 |
返回值 | 键值表:返回json字符串所对应的键值表 |
范例:
- dim a="k2"
- Dim v3 = "i am v3"
- Dim t= {"k1":1, a:true, 3.14:v3,"k":{"k3":3,"k4":4}}
- //表转成JSON数据
- Dim Json字符串 = Encode.TableToJson(t)
- TracePrint Json字符串
- //JSON数据 转换成表数据,表数据无法直接输出查看
- Dim 键值表 = Encode.JsonToTable(Json字符串)
复制代码- 您所在的用户组无法下载或查看附件