易语言中如何处理多个JSON数组
在易语言中,处理JSON数据是开发网络应用或解析接口响应的常见需求,当需要在一个JSON结构中包含多个数组时,核心思路是通过嵌套结构(如对象嵌套数组、数组嵌套对象)或并列数组(同一层级下的多个数组字段)来实现,本文将结合易语言的“易JSON”(常用第三方库,如易JSON支持库或超级列表框JSON扩展)讲解具体实现方法。
易语言JSON基础回顾
易语言本身不内置原生JSON支持,通常依赖第三方库(如易JSON、易语言JSON解析库等),以易JSON为例,其核心操作包括:
- 创建JSON对象:
创建JSON对象() - 创建JSON数组:
创建JSON数组() - 添加数据到对象:
置对象属性() - 添加数据到数组:
加入数组() - 转换为字符串:
JSON转文本() - 从文本解析:
文本转JSON()
多个数组的常见场景与实现
场景1:同一对象下包含多个并列数组
需求:如一个用户信息JSON,包含“用户名数组”“年龄数组”“爱好数组”,均在根对象下并列存在。
实现步骤:
- 创建根JSON对象;
- 分别创建多个数组对象;
- 向各数组添加元素;
- 将数组作为属性添加到根对象;
- 转换为JSON文本。
示例代码:
.版本 2
.程序集 窗口程序_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 根对象, 对象
.局部变量 用户名数组, 数组
.局部变量 年龄数组, 数组
.局部变量 爱好数组, 数组
' 1. 创建根对象
根对象 = 创建JSON对象()
' 2. 创建用户名数组并添加元素
用户名数组 = 创建JSON数组()
加入数组 (用户名数组, "张三")
加入数组 (用户名数组, "李四")
加入数组 (用户名数组, "王五")
' 3. 创建年龄数组并添加元素
年龄数组 = 创建JSON数组()
加入数组 (年龄数组, 25)
加入数组 (年龄数组, 30)
加入数组 (年龄数组, 28)
' 4. 创建爱好数组并添加元素
爱好数组 = 创建JSON数组()
加入数组 (爱好数组, "篮球")
加入数组 (爱好数组, "阅读")
加入数组 (爱好数组, "编程")
' 5. 将数组作为属性添加到根对象
置对象属性 (根对象, "用户名", 用户名数组)
置对象属性 (根对象, "年龄", 年龄数组)
置对象属性 (根对象, "爱好", 爱好数组)
' 6. 输出JSON文本
信息框 (JSON转文本 (根对象, 真), 0, "JSON结果", )
生成的JSON文本:
{
"用户名": ["张三", "李四", "王五"],
"年龄": [25, 30, 28],
"爱好": ["篮球", "阅读", "编程"]
}
场景2:数组嵌套数组(二维数组结构)
需求:如一个“班级学生成绩”JSON,每个学生包含“科目数组”和“分数数组”,整体是一个学生数组,每个学生对象内嵌套两个数组。
实现步骤:
- 创建根JSON数组(存储所有学生);
- 循环创建每个学生的对象;
- 为每个学生对象创建“科目数组”和“分数数组”并填充数据;
- 将学生对象加入根数组;
- 转换为JSON文本。
示例代码:
.版本 2
.程序集 窗口程序_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 学生数组, 数组
.局部变量 学生1, 对象
.局部变量 学生2, 对象
.局部变量 科目数组, 数组
.局部变量 分数数组, 数组
' 1. 创建根学生数组
学生数组 = 创建JSON数组()
' ========== 处理第一个学生 ==========
' 创建学生对象
学生1 = 创建JSON对象()
' 添加科目数组
科目数组 = 创建JSON数组()
加入数组 (科目数组, "数学")
加入数组 (科目数组, "语文")
加入数组 (科目数组, "英语")
置对象属性 (学生1, "科目", 科目数组)
' 添加分数数组
分数数组 = 创建JSON数组()
加入数组 (分数数组, 90)
加入数组 (分数数组, 85)
加入数组 (分数数组, 88)
置对象属性 (学生1, "分数", 分数数组)
' 将学生1加入根数组
加入数组 (学生数组, 学生1)
' ========== 处理第二个学生 ==========
学生2 = 创建JSON对象()
科目数组 = 创建JSON数组()
加入数组 (科目数组, "物理")
加入数组 (科目数组, "化学")
置对象属性 (学生2, "科目", 科目数组)
分数数组 = 创建JSON数组()
加入数组 (分数数组, 92)
加入数组 (分数数组, 87)
置对象属性 (学生2, "分数", 分数数组)
加入数组 (学生数组, 学生2)
' 输出JSON文本
信息框 (JSON转文本 (学生数组, 真), 0, "嵌套数组JSON", )
生成的JSON文本:
[
{
"科目": ["数学", "语文", "英语"],
"分数": [90, 85, 88]
},
{
"科目": ["物理", "化学"],
"分数": [92, 87]
}
]
场景3:对象嵌套数组,数组内再嵌套对象
需求:如一个“商品分类”JSON,每个分类包含“分类名”和“商品列表”(数组,每个商品是一个对象)。
实现步骤:
- 创建根JSON数组(存储所有分类);
- 为每个分类创建对象,包含“分类名”和“商品数组”;
- 商品数组内嵌套商品对象(含商品名、价格等);
- 转换为JSON文本。
示例代码(片段):
.局部变量 分类数组, 数组
.局部变量 电子产品分类, 对象
.局部变量 商品数组, 数组
.局部变量 手机, 对象
分类数组 = 创建JSON数组()
' 创建电子产品分类
电子产品分类 = 创建JSON对象()
置对象属性 (电子产品分类, "分类名", "电子产品")
' 创建商品数组
商品数组 = 创建JSON数组()
' 添加手机商品
手机 = 创建JSON对象()
置对象属性 (手机, "商品名", "iPhone 15")
置对象属性 (手机, "价格", 5999)
加入数组 (商品数组, 手机)
' 添加电脑商品
.局部变量 电脑, 对象
电脑 = 创建JSON对象()
置对象属性 (电脑, "商品名", "MacBook Pro")
置对象属性 (电脑, "价格", 12999)
加入数组 (商品数组, 电脑)
' 将商品数组加入分类
置对象属性 (电子产品分类, "商品列表", 商品数组)
' 将分类加入根数组
加入数组 (分类数组, 电子产品分类)
信息框 (JSON转文本 (分类数组, 真), 0, "嵌套对象数组", )
生成的JSON文本:
[
{
"分类名": "电子产品",
"商品列表": [
{
"商品名": "iPhone 15",
"价格": 5999
},
{
"商品名": "MacBook Pro",
"价格": 12999
}
]
}
]
注意事项
- 库的选择:确保使用支持嵌套结构的JSON库,部分旧版库可能不支持复杂嵌套,建议使用
易JSON或易语言JSON解析库V2.0等成熟工具。 - 数据类型一致:数组内元素建议保持同类型(如全为文本或全为数字),避免部分解析器因类型混乱报错。
- 格式化输出:使用
JSON转文本(JSON对象, 是否格式化)时,设置第二个参数为真



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