1
0
mirror of synced 2026-04-25 03:45:30 +00:00

JSON-GET indexes arrays with integer attributes (#2140)

This commit is contained in:
rmkaplan
2025-05-12 12:15:47 -07:00
committed by GitHub
parent c1c2c757b9
commit 9feba7f7c7
2 changed files with 18 additions and 8 deletions

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "13-May-2024 22:37:13" {WMEDLEY}<lispusers>JSON.;36 9198 (FILECREATED " 7-May-2025 13:57:04" {WMEDLEY}<lispusers>JSON.;38 9891
:EDIT-BY rmk :EDIT-BY rmk
:CHANGES-TO (FNS JSON-GET) :CHANGES-TO (FNS JSON-GET)
:PREVIOUS-DATE "13-May-2024 19:23:02" {WMEDLEY}<lispusers>JSON.;33) :PREVIOUS-DATE "13-May-2024 22:37:13" {WMEDLEY}<lispusers>JSON.;36)
(PRETTYCOMPRINT JSONCOMS) (PRETTYCOMPRINT JSONCOMS)
@@ -177,14 +177,24 @@
NIL]) NIL])
(JSON-GET (JSON-GET
[LAMBDA (OBJECT ATTRIBUTES) (* ; "Edited 13-May-2024 22:35 by rmk") [LAMBDA (OBJECT ATTRIBUTES) (* ; "Edited 7-May-2025 13:56 by rmk")
(* ; "Edited 13-May-2024 22:35 by rmk")
(* ; "Edited 30-Apr-2024 14:26 by rmk") (* ; "Edited 30-Apr-2024 14:26 by rmk")
(* ;; "Returns the value at the end of a chain of ATTRIBUTES in OBJECT") (* ;; "Returns the value at the end of a chain of ATTRIBUTES in OBJECT")
(for A (OBJ _ OBJECT) inside ATTRIBUTES do (if (EQ 'OBJECT (CAR (LISTP OBJ))) (for A (OBJ _ OBJECT) inside ATTRIBUTES do (SELECTQ (CAR (LISTP OBJ))
then [SETQ OBJ (CADR (ASSOC A (CDR OBJ] (OBJECT [SETQ OBJ (CADR (ASSOC A (CDR OBJ])
else (RETURN NIL)) finally (RETURN OBJ]) (ARRAY (CL:UNLESS (AND (FIXP A)
(IGEQ A 0))
(ERROR A
" cannot index a JSON array")
)
(* ;; "ADD1 because zero-origin")
[SETQ OBJ (CAR (NTH OBJ (ADD1 A])
(RETURN NIL)) finally (RETURN OBJ])
) )
(DECLARE%: EVAL@COMPILE DONTCOPY (DECLARE%: EVAL@COMPILE DONTCOPY
(DECLARE%: EVAL@COMPILE (DECLARE%: EVAL@COMPILE
@@ -201,7 +211,7 @@
) )
) )
(DECLARE%: DONTCOPY (DECLARE%: DONTCOPY
(FILEMAP (NIL (559 8839 (JSON-PARSE 569 . 915) (JSON-VALUE 917 . 1286) (JSON-SKIP 1288 . 1562) ( (FILEMAP (NIL (559 9532 (JSON-PARSE 569 . 915) (JSON-VALUE 917 . 1286) (JSON-SKIP 1288 . 1562) (
JSON-STRING 1564 . 2362) (JSON-ARRAY 2364 . 3502) (JSON-OBJECT 3504 . 4961) (JSON-AVPAIR 4963 . 5405) JSON-STRING 1564 . 2362) (JSON-ARRAY 2364 . 3502) (JSON-OBJECT 3504 . 4961) (JSON-AVPAIR 4963 . 5405)
(JSON-NUMBER 5407 . 6921) (JSON-ATOM 6923 . 8230) (JSON-GET 8232 . 8837))))) (JSON-NUMBER 5407 . 6921) (JSON-ATOM 6923 . 8230) (JSON-GET 8232 . 9530)))))
STOP STOP

Binary file not shown.