易语言中如何判断JSON数据是否为空值
在易语言中进行JSON数据处理时,判断某个JSON节点是否为空值(如null
、空字符串、空数组[]
或空对象等)是常见需求,本文将结合易语言的JSON操作特性,详细介绍判断JSON空值的常用方法及示例代码。
易语言JSON操作基础
易语言本身没有内置的JSON支持,通常需要通过第三方支持库(如易语言JSON支持库
、超级JSON
等)或调用外部DLL(如json2.dll
)来处理JSON数据,以下以常见的易语言JSON支持库
为例,假设已正确加载该库,其核心对象包括:
JSON对象
:表示JSON对象(键值对集合),如{"name":"张三","age":30}
。JSON数组
:表示JSON数组(有序值列表),如[1,2,3]
。取JSON值()
:从JSON对象或数组中获取指定键或索引的值。
判断JSON空值的常见场景
JSON中的“空值”可能包含以下几种情况,需根据实际需求区分判断:
- 显式空值:JSON中的
null
值(如{"key":null}
)。 - 空字符串:值为的字符串(如
{"key":""}
)。 - 空数组:长度为0的数组(如
{"key":[]}
)。 - 空对象:无键值对的对象(如
{"key":{}}
)。
判断JSON空值的方法
判断是否为显式null
值
通过取JSON值()
获取节点值后,使用是否为空()
函数(或支持库提供的是否为Null()
方法)直接判断是否为null
。
示例代码:
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 jsonObj, JSON对象 .局部变量 keyValue, 文本型 ' 初始化JSON对象:{"name":"张三","address":null} jsonObj.创建 () jsonObj.置值 ("name", "张三") jsonObj.置值 ("address", null) ' 判断"address"是否为null keyValue = 取JSON值 (jsonObj, "address") .(取JSON值是否为空 (keyValue) = 真) 信息框 ("address的值为null", 0, , ) 否则 信息框 ("address的值不为null", 0, , ) .如果结束 ' 判断"age"是否存在(不存在时取JSON值返回空) keyValue = 取JSON值 (jsonObj, "age") .(取JSON值是否为空 (keyValue) = 真) 信息框 ("age节点不存在或值为null", 0, , ) .如果结束 .结束子程序
说明:
取JSON值是否为空()
是支持库提供的函数,若节点值为null
或节点不存在,则返回真。- 若需明确区分“节点不存在”和“节点值为
null
”,可先用JSON对象.取值是否存在("key")
判断节点是否存在。
判断是否为空字符串
若节点值为字符串类型,需通过取数据类型()
判断类型后,再用是否为空()
判断字符串长度是否为0。
示例代码:
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 jsonObj, JSON对象 .局部变量 keyValue, 文本型 .局部变量 valueType, 整数型 ' 初始化JSON对象:{"message":"","name":"李四"} jsonObj.创建 () jsonObj.置值 ("message", "") jsonObj.置值 ("name", "李四") ' 判断"message"是否为空字符串 keyValue = 取JSON值 (jsonObj, "message") valueType = 取数据类型 (keyValue) .(valueType = 1) ' 1表示文本型 .(取文本长度 (keyValue) = 0) 信息框 ("message为空字符串", 0, , ) 否则 信息框 ("message为非空字符串", 0, , ) .如果结束 否则 信息框 ("message不是字符串类型", 0, , ) .如果结束 .结束子程序
说明:
取数据类型()
返回值类型需参考支持库定义,常见类型:1
(文本型)、2
(整数型)、3
(小数型)、4
(布尔型)、5
(数组型)、6
(对象型)、7
(null)。
判断是否为空数组或空对象
若节点为数组或对象类型,需先判断数据类型,再通过取长度()
(数组)或取键值数量()
(对象)判断是否为空。
示例代码(判断空数组):
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 jsonObj, JSON对象 .局部变量 keyValue, JSON数组 .局部变量 valueType, 整数型 ' 初始化JSON对象:{"hobbies":[],"scores":[90,85]} jsonObj.创建 () .局部变量 emptyArray, JSON数组 emptyArray.创建 () jsonObj.置值 ("hobbies", emptyArray) .局部变量 scoresArray, JSON数组 scoresArray.创建 () scoresArray.添加值 (90) scoresArray.添加值 (85) jsonObj.置值 ("scores", scoresArray) ' 判断"hobbies"是否为空数组 keyValue = 取JSON值 (jsonObj, "hobbies") valueType = 取数据类型 (keyValue) .(valueType = 5) ' 5表示数组型 .(取数组长度 (keyValue) = 0) 信息框 ("hobbies为空数组", 0, , ) 否则 信息框 ("hobbies为非空数组,长度:" + 到文本 (取数组长度 (keyValue)), 0, , ) .如果结束 .如果结束 .结束子程序
示例代码(判断空对象):
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 jsonObj, JSON对象 .局部变量 keyValue, JSON对象 .局部变量 valueType, 整数型 ' 初始化JSON对象:{"info":{},"detail":{"age":25}} jsonObj.创建 () .局部变量 emptyObj, JSON对象 emptyObj.创建 () jsonObj.置值 ("info", emptyObj) .局部变量 detailObj, JSON对象 detailObj.创建 () detailObj.置值 ("age", 25) jsonObj.置值 ("detail", detailObj) ' 判断"info"是否为空对象 keyValue = 取JSON值 (jsonObj, "info") valueType = 取数据类型 (keyValue) .(valueType = 6) ' 6表示对象型 .(取对象键值数量 (keyValue) = 0) 信息框 ("info为空对象", 0, , ) 否则 信息框 ("info为非空对象,键值数量:" + 到文本 (取对象键值数量 (keyValue)), 0, , ) .如果结束 .如果结束 .结束子程序
综合判断:是否为“空值”(包含null、空字符串、空数组、空对象)
若需统一判断节点是否为任意一种空值,可封装一个自定义函数,依次检查null
、空字符串、空数组、空对象。
示例代码:
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 jsonObj, JSON对象 ' 初始化JSON对象:{"test1":null,"test2":"","test3":[],"test4":{},"test5":"正常值"} jsonObj.创建 () jsonObj.置值 ("test1", null) jsonObj.置值 ("test2", "") .局部变量 emptyArray, JSON数组 emptyArray.创建 () jsonObj.置值 ("test3", emptyArray) .局部变量 emptyObj, JSON对象 emptyObj.创建 () jsonObj.置值 ("test4", empty
还没有评论,来说两句吧...