如何在JSONiq中创建存储指定学生课程的$courses变量
用JSONiq生成指定SSN学生的课程对象
核心实现代码
let $transcript := [ { "dcode": "CS", "cno": 211, "ssn": 82, "grade": "A" }, { "dcode": "CS", "cno": 211, "ssn": 75, "grade": "A" }, { "dcode": "MTH", "cno": 125, "ssn": 82, "grade": "F" } ] let $courses := object { for $entry in $transcript[] where $entry.ssn eq 82 return $entry.dcode : $entry.cno } return $courses
关键步骤
- 遍历并过滤条目:通过
for $entry in $transcript[]展开数组中的每一个元素,再用where $entry.ssn eq 82筛选出SSN为82的学生选课记录 - 动态构造目标对象:在
object {}构造器内部,通过return $entry.dcode : $entry.cno将符合条件记录的dcode作为对象的键,cno作为对应的值,自动拼接成目标结构
问题说明
你之前在{}内直接写循环失败,是因为JSONiq的对象构造器要求动态生成键值对时,必须遵循object { for ... return key : value }的语法结构,不能直接嵌套普通循环语句。
运行代码后,$courses的输出结果为:
{"CS":211,"MTH":125}
内容的提问来源于stack exchange,提问作者user15954051
相关产品推荐
相关产品推荐

