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数据实际类型一致。