Subject: bug#34242: 26.1; json-encode crudely rejects unwelcome objects

From: phs <[email-masked]>
Date: Tue, 29 Jan 2019 19:31:28 +0530

json-encode is supposed to return a JSON representation of its argument.

It fails on some objects:

  (setq debug-on-error t)
  (require 'json)

  (json-encode (list (list 1)))

  ==> Debugger entered--Lisp error: (json-key-format 1)

  (json-encode (list (cons (cons 'a 'b) 'a)))

  ==> Debugger entered--Lisp error: (wrong-type-argument listp a)

I understand that maybe not all objects make sense for json-encoding but
the documentation of json-encode does not specify what is a valid
argument, and (it seems) the package does not do it either.

Also the documentation does not list the error-codes so that we could
catch them in code.

--phs