emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: JSON->lisp Mapping: Hash vs AList


From: Philipp Stephani
Subject: Re: JSON->lisp Mapping: Hash vs AList
Date: Sat, 16 Dec 2017 22:24:35 +0000



Eli Zaretskii <address@hidden> schrieb am Do., 14. Dez. 2017 um 17:28 Uhr:
> From: Philipp Stephani <address@hidden>
> Date: Wed, 13 Dec 2017 22:37:46 +0000
> Cc: address@hidden
>
> Sounds reasonable, here is a patch.

Thanks.

> address@hidden json-parse-string string
> address@hidden json-parse-string string &key (object-type 'hash-table)

Hmm.. why is there an apostrophe before "hash-table"?  What do you
want to get in the output there?

An apostrophe? It seems to work as expected.
 

And btw, I don't see "&key" mentioned anywhere in the ELisp manual, so
I wonder whether the reader will understand what it means.

This is the Common Lisp syntax, from cl-defun etc. It's a bit unfortunate that it's not used in Emacs core, even for functions that take keyword arguments such as `make-process'. I can switch to '&rest args' if you prefer that.
 

> +          case json_object_alist:
> +            {
> +              result = Qnil;
> +              const char *key_str;
> +              json_t *value;
> +              json_object_foreach (json, key_str, value)
> +                {
> +                  Lisp_Object key = Fintern (json_build_string (key_str), Qnil);
> +                  result
> +                    = Fcons (Fcons (key, json_to_lisp (value, object_type)),
> +                             result);
> +                }
> +              result = Fnreverse (result);

Is there a reason for calling nreverse here?

It puts the elements in the same order as the original JSON. (The Jansson parser also retains the original order.)
This isn't very important, just a bit nicer and less surprising.
 

> +The keyword argument OBJECT-TYPE specifies which Lisp type is used to
                        ^^^^^^^^^^^
Shouldn't that be `:object-type' (including quotes)?

Depending on whether we can use &key in a docstring in core. If so, then this one is correct, see e.g. the docstring of should-error. 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]