易语言如何轻松获取JSON数据中的值
在数据处理中,JSON(JavaScript Object Notation)因其轻量级、易解析的特性,成为跨语言数据交换的主流格式,易语言作为国产编程语言,虽以中文编程为特色,但在处理JSON时需借助特定方法或第三方支持,本文将详细介绍在易语言中获取JSON数据值的多种方式,从基础到进阶,帮助开发者高效解析JSON。
理解JSON数据结构
在开始取值前,需先明确JSON的基本结构:
- 对象(Object):用 表示,键值对形式,如
{"name":"张三", "age":18}。 - 数组(Array):用
[]表示,有序值列表,如[{"name":"李四"}, {"name":"王五"}]。 - 值(Value):可以是字符串、数字、布尔值、null、对象或数组。
取值的核心是根据“键名”(对象)或“索引”(数组)定位目标数据。
使用易语言内置JSON支持(易语言5.x及以上版本)
易语言5.9及以上版本内置了“JSON支持库”,提供了基础的JSON解析功能,可直接通过“JSON对象”操作数据。
创建JSON对象并解析字符串
假设有以下JSON数据:
{
"name": "张三",
"age": 25,
"isStudent": false,
"courses": ["语文", "数学", "英语"],
"address": {
"city": "北京",
"district": "朝阳区"
}
}
步骤1:加载JSON字符串
使用到JSON()函数将JSON字符串转换为易语言可操作的JSON对象:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 jsonText, 文本型
.局部变量 jsonObj, JSON对象
jsonText = "{""name"":""张三"",""age"":25,""isStudent"":false,""courses"":[""语文"",""数学"",""英语""],""address"":{""city"":""北京"",""district"":""朝阳""}}"
jsonObj.到JSON(jsonText) ' 将字符串转为JSON对象
步骤2:获取对象中的键值
-
获取字符串值(如
name):.局部变量 name, 文本型 name = jsonObj.取键值("name") ' 返回"张三" -
获取数值(如
age):.局部变量 age, 整数型 age = 到整数(jsonObj.取键值("age")) ' JSON中的数字默认为文本,需转换 -
获取布尔值(如
isStudent):.局部变量 isStudent, 逻辑型 isStudent = 到逻辑(jsonObj.取键值("isStudent")) ' 返回假
步骤3:获取数组中的值
JSON中的数组可通过取数组()方法获取,再通过索引取值(索引从0开始):
.局部变量 courses, JSON数组
.局部变量 course1, 文本型
courses = jsonObj.取数组("courses") ' 获取"courses"数组
course1 = courses.取值(0) ' 取第一个元素,返回"语文"
步骤4:获取嵌套对象中的值
若JSON包含嵌套对象(如address),需逐层获取:
.局部变量 addressObj, JSON对象
.局部变量 city, 文本型
addressObj = jsonObj.取对象("address") ' 获取"address"对象
city = addressObj.取键值("city") ' 返回"北京"
完整示例代码
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 jsonText, 文本型
.局部变量 jsonObj, JSON对象
.局部变量 name, 文本型
.局部变量 age, 整数型
.局部变量 course1, 文本型
.局部变量 city, 文本型
jsonText = "{""name"":""张三"",""age"":25,""isStudent"":false,""courses"":[""语文"",""数学"",""英语""],""address"":{""city"":""北京"",""district"":""朝阳""}}"
jsonObj.到JSON(jsonText)
' 取简单键值
name = jsonObj.取键值("name") ' "张三"
age = 到整数(jsonObj.取键值("age")) ' 25
' 取数组值
course1 = jsonObj.取数组("courses").取值(0) ' "语文"
' 取嵌套对象值
city = jsonObj.取对象("address").取键值("city") ' "北京"
' 输出结果
信息框("姓名:" + name + #换行 + "年龄:" + 到文本(age) + #换行 + "第一门课程:" + course1 + #换行 + "城市:" + city, 0, "JSON取值示例")
使用第三方JSON解析库(易语言5.x以下版本或复杂场景)
若使用易语言5.x以下版本,或需更强大的JSON功能(如复杂查询、格式化等),可借助第三方库,如“易语言JSON解析库”(如jeval、fastjson等),以常用的jeval库为例:
引入第三方库
下载jeval库(如“易语言JSON解析器”),将.e文件放入易语言的“程序集”目录,并在代码中引用:
.版本 2
.程序集 程序集1
.程序集变量 json解析器, jeval类 ' 引入jeval类
解析JSON并取值
仍以之前的JSON数据为例:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 jsonText, 文本型
.局部变量 json解析器, jeval类
.局部变量 name, 文本型
.局部变量 age, 整数型
.局部变量 course1, 文本型
.局部变量 city, 文本型
jsonText = "{""name"":""张三"",""age"":25,""isStudent"":false,""courses"":[""语文"",""数学"",""英语""],""address"":{""city"":""北京"",""district"":""朝阳""}}"
' 初始化解析器
json解析器.创建(jsonText)
' 取简单键值(jeval支持直接路径表达式)
name = json解析器.取值("name") ' "张三"
age = 到整数(json解析器.取值("age")) ' 25
' 取数组值(通过索引)
course1 = json解析器.取值("courses[0]") ' "语文"
' 取嵌套对象值(通过点号连接路径)
city = json解析器.取值("address.city") ' "北京"
' 输出结果
信息框("姓名:" + name + #换行 + "年龄:" + 到文本(age) + #换行 + "第一门课程:" + course1 + #换行 + "城市:" + city, 0, "JSON取值示例")
第三方库的优势
- 路径表达式:支持类似
"address.city"或"courses[1]"的简洁路径,无需逐层获取。 - 异常处理:若键不存在,可返回默认值或抛出异常(需库支持)。
- 性能优化:针对复杂JSON解析效率更高。
常见问题与注意事项
JSON字符串中的转义字符
JSON字符串中的双引号需用\"表示,易语言中需写成(如"name"写成""name""),否则会解析失败。
数据类型转换
JSON中的数字可能是文本(如"25"),需用到整数()、到文本()等函数转换类型;布尔值需用到逻辑()转换。
键不存在时的处理
-
内置JSON支持:若键不存在,
取键值()返回空文本,可通过判断()处理:.如果真 (jsonObj.判断("phone")) phone = jsonObj.取键值("phone") .否则 phone = "未填写" .如果真结束 -
第三方库:如
jeval可设置默认值:phone = json解析器.取值("phone", "未填写



还没有评论,来说两句吧...