【发布时间】:2016-01-21 21:44:34
【问题描述】:
我正在尝试在 Common Lisp 中导入 JSON。我想出了如何从 JSON 字符串中解码对象,但我不知道如何访问返回的对象的属性。要解码一个字符串(并将结果存储在 ***tempjson** 中),我这样做:
(defun test-json ()
(with-input-from-string
(s "{\"foo\": [1, 2, 3], \"bar\": true, \"baz\": \"!\"}")
(defparameter *tempjson* (json:decode-json s))))
如何访问 *tempjson* 数据。例如,如何获取 foo 属性的值?
【问题讨论】:
-
不清楚你在问什么。如果你可以将一个流传递给decode-json,你能不能传递一个由with-open-file创建的流?
-
我不完全明白你的意思。我试图在解码后获取 foo 的值。例如,如果我要使用哈希表,它会是 (gethash 'foo tempjson) 但我不知道在这种情况下的等价物。
-
您的问题标题是“使用 cl-json Common Lisp 解码 JSON 文件”。看起来答案类似于
(with-open-file (s "some-file") (json:decode-json s))。在您的问题中,您说您“似乎无法访问创建的 JSON 文件”。你在说什么文件?*tempjson*不是一个文件,它是一个变量,而且你还没有向我们展示它的值。如果你运行test-json,然后评估*tempjson*,你会得到什么? -
根据您接受的答案和您对问题的 cmets,我对问题进行了一些编辑,以反映您实际上正在尝试做的事情。可以看看是不是合适的描述?
-
是的,好多了。谢谢。答案很有效。
标签: json lisp common-lisp