Erlang调用ejson解析JSON时报错,咨询具体报错原因
Erlang ejson解析错误原因汇总
- JSON结构类型匹配错误
ejson库的解码规则为:JSON对象解码为{[键值对列表]}格式的元组,JSON数组解码为普通列表。你代码中total字段的匹配逻辑要求total对应的是JSON对象,但你给出的预期结构里total是数组格式,类型不匹配会直接抛出匹配异常。
同时代码中child字段的遍历逻辑要求child是JSON数组,数组内的每个元素都是JSON对象,和你给出的单对象格式的child结构也不匹配。 - 字段缺失/大小写不匹配
代码中要求total下必须存在大写开头的Title字段,child数组的每个元素下必须存在bid字段,但你给出的预期结构中都没有这两个字段,lists:keyfind匹配不到对应键时会返回false,和你写的{_, 字段名}模式匹配失败,导致报错。 - 代码本身存在语法错误
你贴出的代码中{_, Title= lists:keyfind(<<"Title">>, 1, L1),缺少右括号,正确语法应为{_, Title} = lists:keyfind(<<"Title">>, 1, L1),,语法错误会导致代码无法正常编译运行。
符合代码要求的JSON结构示例
{ "total": { "id": 1, "name": 1, "icon_id": 503, "Title": "自定义标题" }, "child": [ { "id": 1, "bid": 1001, "total_id": 20, "group": 0 }, { "id": 2, "bid": 1002, "total_id": 20, "group": 0 } ] }
内容的提问来源于stack exchange,提问作者xbuyk987
相关产品推荐
相关产品推荐

