lisp(cl-json库):将键/值对添加到.json文件

时间:2020-02-06 01:03:39

标签: json lisp common-lisp

我正在使用cl-json库,将{"main": "build/electron.js"}条目添加到package.json文件中。

这是我的尝试:

(let ((package-json-pathname (merge-pathnames *app-pathname* "package.json")))
  (let
    ((new-json (with-open-file (package-json package-json-pathname :direction :input :if-does-not-exist :error)
                  (let ((decoded-package (json:decode-json package-json)))
                    (let ((main-entry (assoc :main decoded-package)))                      
                      (if (null main-entry)
                        (push (:main . "build/electron.js") decoded-package)
                        (setf (cdr main-entry) "build/electron.js"))
                      decoded-package)))))
    (with-open-file (package-json package-json-pathname :direction :output :if-exists :supersede)
      (json:encode-json new-json package-json))
  )
)

代码在(push (:main . "build/electron.js") decoded-package)行失败,抱怨(:main . "build/electron.js")不是有效列表。哪一个很公平,但是使用此库将k / v条目添加到.json文件的正确方法是什么?

0 个答案:

没有答案