【发布时间】:2014-04-24 10:57:45
【问题描述】:
我还有一个关于在 Common Lisp 中解码 JSON 的问题。我选择ST-JSON 作为我的工具。我能够得到一个包含 JSON 数据的JSO 对象,并使用st-json:getjso 访问所有字段。我想编写一个原则上类似于destructuring-bind 的宏,它可以为以 JSON 字段命名的变量提供本地绑定(从那时起,我开始怀疑这是否是一个好主意,但这是一个不同的问题)。我想出了以下几点:
(defmacro destructure-jso (jso &body body)
(let (keys values)
(st-json:mapjso #'(lambda (key value)
(push key keys)
(push value values))
jso)
`(destructuring-bind ,keys ,values
,@body)))
但是当我尝试在JSO 对象上使用它时,我收到错误The value PARAMS is not of the expected type STRUCTURE. 其中PARAMS 是对象。谁可以给我解释一下这个?
谢谢。
【问题讨论】:
标签: json macros lisp common-lisp ccl