请选择 进入手机版 | 继续访问电脑版
 找回密码
 快速注册

QQ登录

只需一步,快速开始

图文教程 【图文】JSON对象类-教你如何合成和解析json数据

1
回复
3763
查看
[ 复制链接 ]

209

主题

225

帖子

1366

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1366
2020-8-14 10:43:27 显示全部楼层 阅读模式
图文教程官网可查看:http://doc.voldp.com/


为了照顾某些人懒得打开图文教程官网去找,所以特意发此贴解决部分人的需求。



JSON对象类操作
作者:创世魂

● 帮助说明

本类位于“JSON数据访问支持”模块中。



一、JSON对象类
● 本类说明

JSON是一种轻量级的数据交换格式,可以理解为易语言当中的“写配置项”功能。
当然JSON功能要更多,可以多层嵌套存储一些复杂的数据。
JSON的存储要使用“键名”“键值”,大致数据格式如下图。

1、以精易网页助手2.66版本为准。
图左:为JOSN对象类文本代码。
图右:为解析到树形框后显示效果,更加方便理解JSON格式。
2、JSON对象类标准格式为以“{”开始,最终以“}”结尾。
键名:用英文双引号包含。
键值:可以使用“文本”“整数”“小数”“长整数”“逻辑”(true为真、false为假)
以及“对象键值”(可使用json对象类或json数组类当键值)。
3、利用精易网页助手解析到树型框后(图右),凡是以“象”文字开始的代表为“JSON对象类”
“组”文字开始的代表为“JSON数组类”


● 到可读文本
● 置入小数值
“到可读文本”帮助文档:
本方法可将json对象转换为可读的文本数据。
参数1:填写要操作的json对象,通过变量名调用本方法时不需要写本参数。
参数2:填写json文本缩进的空格数。

“置入小数值”帮助文档:
将某个小数值置入到当前JSON对象类中,失败返回空对象。

代码编写如下图:
定义类型为“JSON对象类”变量,调用“置入小数值()”方法置入一个小数。
通过“JSON对象”变量调用“到可读文本()”方法,将json转换成文本显示在编辑框中。

运行效果如下图:

● 置入整数值
● 置入文本值
● 置入逻辑值
● 置入长整数值
以上几个方法就是用于置入不同类型的数据到JSON对象中。

代码编写如下图:
1、定义类型为“JSON对象类”的变量。
2、分别调用以上方法置入数据。
3、出了“到可读文本()”方法外,“到文本()”方法也可以将json转换成文本显示。

运行效果如下图:

● 置入对象值
帮助文档如下图:
通过本方法可将一个“JSON对象类”或者“JSON数组类”放入当前对象内嵌套。
本方法失败返回空对象。

代码编写如下图:
1、定义名称为“对象1”的json变量,置入一些数据。
2、定义名称为“对象2”的变量,置入普通数据后,可调用“置入对象值()”方法将“对象1”置入当前JSON中。

运行效果如下图:
可看到当JSON对象类被嵌套后,依然存在首尾“{}”符号。

● 取小数值● 取整数值● 取文本值● 取逻辑值● 取长整数值
以上几个方法用法一致,不同之处就是要取的类型不同,此处举例“取文本值()”方法。

“取文本值”帮助文档:
通过本方法可取出指定“键名”“键值”,如果不存在将返回默认值。

● 创建自文本数据

帮助文档如下图:
通过“json文本数据”创建当前对象,如果创建失败返回“空对象”

准备如下JSON文本数据:
{
"键名1":"键值1",
"键名2":"键值2"
}

代码编写如下图:
1、首先定义名称为“json数据”的常量值,将准备的json文本导入。
2、调用“创建自文本数据()”方法创建当前json对象。
3、最后调用“取文本值()”方法取出指定键名的键值。

运行效果如下图:

● 取值
帮助文档如下图:
当指定键值的目标类型不确定时,可通过本方法取出对象数据。
取出的对象类数据可通过“到文本()”方法直接将其转换成要取的数据。

准备如下JSON文本:
{
"键名1":111
}

代码编写如下图:
1、定义常量导入准备好的JSON文本数据。
2、调用“创建自文本数据()”方法创建json对象。
3、最后调用“取值()”取出数据后强制“到文本()”显示在编辑框。

运行效果如下图:

● 取对象值
帮助文档如下图:
调用本方法可取出JSON数据中指定“键名”的“JSON对象类”。

准备一段存在嵌套JSON对象的JSON文本:
{
  "键名1":"键值1",
  "嵌套对象":{
  "嵌套1":"嵌套键值"
  }
}

代码编写如下图:
1、定义文本型的常量值导入json文本。
2、创建JSON对象后可直接调用“取对象值()”方法取出出被嵌套的JSON对象。
3、最后转换成文本显示在编辑框。

运行效果如下图(GIF):

● 成员数(读)

帮助文档如下图:
通过本属性可取出当前json对象的成员数。

代码编写如下图:
1、“按钮1”被点击后,设置三个json键名。
2、“按钮2”被点击后,调用当前属性取出成员数。

运行效果如下图(GIF):

● 创建自数组
帮助文档如下图:
本方法可通过指定的键名数组,创建一个新的JSON对象类。

准备JSON数据:
{
  "1":"键值1",
  "2":"键值2",
  "3":"键值3"
}

代码编写如下图:
1、定义文本常量将准备的JSON文本放入初始值中。
2、定义“键名数组”,数组成员分别是“1”、“2”。
3、将json文本创建JSON对象后继续根据“键名数组”创建JSON对象。
4、最后将创建的JSON对象显示在编辑框中。

运行效果如下图:
最终结果,键名“3”和对应的键值都不存在,证明键名数组创建成功。

● 创建自解析对象

帮助文档如下图:
本方法可通过“JSON解析类”创建当前JSON对象,失败返回空对象。

JSON数据准备:
{
  "1":"one",
  "2":"two",
  "3":"three"}

代码编写如下图:
1、定义“JSON文本”常量值,将json文本放入初始值中。
2、定义“JSON对象类”变量,勾选参考。
3、通过“JSON解析类.创建自文本()”创建JSON解析对象,将创建的对象填入“创建自解析对象()”方法中。
4、通过“JSON”变量取文本值即可取出json键值,用来验证是否创建成功。

运行结果如下图(GIF):

● 到JSON数组

帮助文档如下图:
本方法的作用是通过“JSON键名数组”取出所对应的“键值数组”并返回。
转换失败返回空对象。

JSON数据准备:
准备如下图所示的JSON文本:JSON对象类嵌套JSON数组类,数组中嵌套三组JSON对象类。
{
"名称":"JSON测试",
"数组名称":[
   {
   "名称":"火山软件",
   "网址":"Voldev"
   },
   {
   "名称":"火山软件",
   "网址":"Voldev"
   },
   {
   "名称":"火山软件",
   "网址":"Voldev"
   }
]
}

本方法较难理解,拆解成两部分讲解。

第一部分:
1、定义“键名数组”变量,初始值填写两个成员的文本数组。
2、定义基础类为“JSON数组类”的变量,通过“JSON数组类.创建自数组()”方法赋值给此变量。
到此完成“JSON键名数组创建”
3、定义“JSON文本”常量值,导入JSON数据。
4、定义两个变量,类型分别为“JSON对象类”“JSON数组类”
5、通过“JSON文本”创建“JSON对象”
6、调用当前方法,取出键名数组对应的键值数组,并转换成可读文本。

运行效果(1):
最终转换出来的数据并没有“键名数组”中的两个键名,但是取出了对应的键值。


下面进行第二部分,取出所有键值。

第二部分:
1、使用“//”屏蔽“到可读文本()”方法。
2、通过“JSON数组.取文本值(0)”,取出的就是“名称”的键值。
3、“数组名称”的键值是数组,所以需要使用“循环()”方法取出。

运行效果(2):
所有的键值将从json数据中取出。

● 文本转义
帮助文档如下图:
通过本方法可将带有转义符的文本,将转义符一同输出并返回,同时会增加引号。

代码编写如下图:
“\n”为换行符,通过本方法可将“\n”直接返回。

运行结果如下图:
最终返回结果会自动添加引号。

● 是否拥有指定数据
帮助文档如下图:
通过本方法可以判断JSON数据中是否存在指定“键名”
存在返回真,不存在返回假。

JSON数据准备:
{
"火山":"VolDev",
"平台":"voldp"
}

代码编写如下图:
1、定义文本常量,导入准备的JSON数据。
2、定义类型为“JSON对象类”的变量,勾选参考。
3、“按钮1”被点击后,创建JSON对象,判断“火山”是否存在。
4、“按钮2”被点击后,创建JSON对象,故意判断一个不存在的键名“123”

运行效果如下图(GIF):

● 移除指定对象
帮助文档如下图:
通过本方法可移除当前JSON对象内的指定键值,并返回当前键值。

JSON数据准备:
{
   "1":"键值1",
   "2":"键值2",
   "3":"键值3",
   "4":"键值4",
   "5":"键值5"
}

代码编写如下图:
1、定义“json文本”常量,导入json数据。
2、定义类型为“JSON对象类”的变量,勾选参考,通过“JSON文本”创建当前对象。
3、调用当前方法移除“3”,到文本转换后可取出“3”对应的“键值”
4、最后将当前对象转换为可读文本。

运行效果如下图:

● 追加指定值
帮助文档如下图:
通过本方法可以给指定键名追加新的键值,追加后的键值后,原键值将会转换为数组类型。
如果追加的键名不存在,将在原json数据的基础上添加新的键名和键值。

代码编写如下图:
1、定义“JSON文本”常量,导入json数据(当前JSON数据与上一个方法相同)。
2、通过JSON文本创建JSON对象,调用“追加指定值()”方法追加数据。
3、最后转换成可读文本。

运行效果如下图:
左图:给已有的“键值”追加“新的键值”
右图:给不存在的键名追加数据。

● 键名枚举器
帮助文档如下图:
通过本方法可创建“文本枚举器类”取出所有json数据的所有键名。

代码编写如下图:
1、定义“JSON文本”常量,导入json数据(当前JSON数据与上一个方法相同)。
2、通过JSON文本创建JSON对象。
3、调用当前方法创建“枚举器”
4、利用“判断循环()”方法,循环取出所有成员。

运行效果如下图:

● 判断键值类型
说明:
在JSON数据操作中,可能会遇到复杂的JSON嵌套,有些可能是未知类型。
通过以上学习的知识,来实现通过“键名”如何判断当前键值是什么类型,从而做出对应的操作。

准备JSON文本:
从上到下键值类型依次为:文本,整数,json对象类,json数组类。
{
  "1":"文本",
  "2":10086,
  "3":{
      "3a":"3a键值"
  },
  "4":[
   "数组1","数组2"
  ]
}

代码编写如下图:
1、定义“JSON文本”常量,导入JSON数据。
2、通过“JSON文本”创建JSON对象。
3、创建键名枚举器,循环枚举所有键名。
4、调用“取值()”方法,取出键值对象,依次判断是否属于指定类型。
5、 如果属于指定类型,将对应内容添加到编辑框中。

运行效果如下图:
最终结果和原JSON数据实际类型一致。












上一篇:火山安卓如何使用花式按钮窗口组件,花式按钮字体图标
下一篇:JSON数组类-教你如何正确解析和合成JSON数组类
回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
2020-9-9 22:23:34 显示全部楼层
收藏.......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则