MistQL运行查询报Expected RuntimeValueType.Number异常如何解决
异常产生原因
mistql.query()方法的第二个参数要求传入Python原生数据结构(字典、列表、基础值类型等),不会自动对传入的JSON格式字符串做反序列化处理。
你的代码中传入的data是内容为JSON的普通字符串,MistQL会将其识别为字符串类型的根值。字符串类型仅支持数字下标索引(用于取指定位置的字符),而你的查询语句@.foo是尝试用字符串键foo做属性索引,类型校验不通过,因此抛出MistQLTypeError。
修复方案
提前将JSON字符串解析为Python原生字典后再传入查询接口即可,有两种常见实现方式:
- 若原始数据是JSON格式字符串,使用Python标准库
json做反序列化:
import mistql import json data = json.loads("{\"foo\": \"bar\"}") query = '@.foo' results = mistql.query(query, data) print(results)
运行后将输出预期结果:bar
- 若不需要处理JSON字符串,可直接定义原生字典作为数据源:
import mistql data = {"foo": "bar"} query = '@.foo' results = mistql.query(query, data) print(results)
内容的提问来源于stack exchange,提问作者Raju
相关产品推荐
相关产品推荐

