Eigene Routine um flache json kv Files zu parsen.
This commit is contained in:
@@ -620,6 +620,41 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; --- JSON-Array von flachen Objekten parsen ---
|
||||
;; Verwendet ssg-cfg-trim und ssg-cfg-parse-kv aus ssg_core.
|
||||
;; Rueckgabe: Liste von Alists (("key" . wert) ...)
|
||||
(defun ssg-parse-json-array (zeilen / in-obj obj ergebnis zeile kv trimmed)
|
||||
(setq in-obj nil obj nil ergebnis nil)
|
||||
(foreach zeile zeilen
|
||||
(setq trimmed (ssg-cfg-trim zeile))
|
||||
(cond
|
||||
((= trimmed "{")
|
||||
(setq in-obj T obj nil))
|
||||
((or (= trimmed "}") (= trimmed "},"))
|
||||
(if (and in-obj obj)
|
||||
(setq ergebnis (cons (reverse obj) ergebnis)))
|
||||
(setq in-obj nil))
|
||||
(in-obj
|
||||
(setq kv (ssg-cfg-parse-kv trimmed))
|
||||
(if kv (setq obj (cons kv obj))))
|
||||
)
|
||||
)
|
||||
(reverse ergebnis)
|
||||
)
|
||||
|
||||
;; JSON-Datei als flaches Array laden
|
||||
;; Rueckgabe: Liste von Alists oder nil bei Fehler
|
||||
(defun ssg-load-json (datei / zeilen)
|
||||
(setq zeilen (ssg-read-file-lines datei))
|
||||
(if zeilen (ssg-parse-json-array zeilen))
|
||||
)
|
||||
|
||||
;; Wert aus Alist lesen: (ssg-val alist "key")
|
||||
(defun ssg-val (alist key)
|
||||
(cdr (assoc key alist))
|
||||
)
|
||||
|
||||
|
||||
;; Verschachteltes JSON-Objekt parsen (1 Ebene tief)
|
||||
;; {"section": {"key": val, ...}, ...}
|
||||
;; -> (("section" ("key" . val) ...) ...)
|
||||
|
||||
Reference in New Issue
Block a user