From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] json: Add support for encoding structs Date: Wed, 26 Apr 2017 08:13:10 -0400 Message-ID: References: <874lxeq6mz.fsf@lifelogs.com> <87pog1pqdn.fsf@lifelogs.com> <87d1c0pnqj.fsf@lifelogs.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1493208890 31352 195.159.176.226 (26 Apr 2017 12:14:50 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 26 Apr 2017 12:14:50 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Apr 26 14:14:47 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d3LqH-00080w-S7 for ged-emacs-devel@m.gmane.org; Wed, 26 Apr 2017 14:14:45 +0200 Original-Received: from localhost ([::1]:54903 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3LqN-0005V7-HX for ged-emacs-devel@m.gmane.org; Wed, 26 Apr 2017 08:14:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53228) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3Loy-00042O-5p for emacs-devel@gnu.org; Wed, 26 Apr 2017 08:13:25 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3Lot-000469-80 for emacs-devel@gnu.org; Wed, 26 Apr 2017 08:13:24 -0400 Original-Received: from [195.159.176.226] (port=36421 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3Lot-00045U-0x for emacs-devel@gnu.org; Wed, 26 Apr 2017 08:13:19 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1d3Lol-0005th-B8 for emacs-devel@gnu.org; Wed, 26 Apr 2017 14:13:11 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 16 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:FNWErP/yUSgosZQ+lCfLv2ZCPZg= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:214303 Archived-At: > Maybe one way is to distinguish '(:serialize-field nil) from '() by > checking with memq for the key? FWIW, while you can make this work, I think it's a bad API: Elisp usually behaves like "an absent argument is equivalent to nil", and it's easier for the coder if we stick to this behavior (also, occasionally it's handy to be able to use ":key nil" in order not to pass :key). > IIRC, the empty string is a valid JSON key (`JSON.parse(`{"":1}`)` > works in JS). Symbols are also considered a valid type according to > `json-encode-key'. I don't see why that forces us to also accept symbols here. Stefan