lisp (библиотека cl- json): добавить пару ключ / значение в файл. json - PullRequest
0 голосов
/ 06 февраля 2020

Используя библиотеку 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") не является допустимым списком Что, честно, но как правильно добавить запись ak / v в файл. json с помощью этой библиотеки?

...