如何通过cl-json访问从JSON解码的对象?

phl*_*lie 2 lisp json common-lisp

我试图在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))))
Run Code Online (Sandbox Code Playgroud)

如何访问*tempjson*数据.例如,如何获取foo属性的值?

jki*_*ski 8

decode-json似乎返回一个关联列表(至少在这种情况下;请参阅文档).您可以使用以下函数访问值assoc:

(defun test-json ()
  (with-input-from-string (s "{\"foo\": [1, 2, 3], \"bar\": true, \"baz\": \"!\"}")
    (let ((data (json:decode-json s)))
      (format t "~a~%" (rest (assoc :foo data))))))
Run Code Online (Sandbox Code Playgroud)