Re: [Json] Leading and trailing whitespace

Paul Hoffman <paul.hoffman@vpnc.org> Tue, 11 June 2013 02:02 UTC

Return-Path: <paul.hoffman@vpnc.org>
X-Original-To: json@ietfa.amsl.com
Delivered-To: json@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2879221E809B for <json@ietfa.amsl.com>; Mon, 10 Jun 2013 19:02:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.432
X-Spam-Level:
X-Spam-Status: No, score=-102.432 tagged_above=-999 required=5 tests=[AWL=0.167, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r-+nhds9bPCl for <json@ietfa.amsl.com>; Mon, 10 Jun 2013 19:02:10 -0700 (PDT)
Received: from hoffman.proper.com (IPv6.Hoffman.Proper.COM [IPv6:2605:8e00:100:41::81]) by ietfa.amsl.com (Postfix) with ESMTP id B0CAF21E8099 for <json@ietf.org>; Mon, 10 Jun 2013 19:02:09 -0700 (PDT)
Received: from [10.20.30.90] (50-0-66-165.dsl.dynamic.sonic.net [50.0.66.165]) (authenticated bits=0) by hoffman.proper.com (8.14.5/8.14.5) with ESMTP id r5B21f1x061237 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 10 Jun 2013 19:01:42 -0700 (MST) (envelope-from paul.hoffman@vpnc.org)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\))
From: Paul Hoffman <paul.hoffman@vpnc.org>
In-Reply-To: <06e901ce6638$e8f27a90$bad76fb0$@augustcellars.com>
Date: Mon, 10 Jun 2013 19:01:41 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <51DE7E41-D682-4340-A234-7F7CFE513C10@vpnc.org>
References: <06c101ce6625$0f891bf0$2e9b53d0$@augustcellars.com> <379266A1-82C1-4FF5-BD7C-EE657F1FD41F@vpnc.org> <06e901ce6638$e8f27a90$bad76fb0$@augustcellars.com>
To: Jim Schaad <ietf@augustcellars.com>
X-Mailer: Apple Mail (2.1508)
Cc: json@ietf.org
Subject: Re: [Json] Leading and trailing whitespace
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "JavaScript Object Notation \(JSON\) WG mailing list" <json.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/json>, <mailto:json-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/json>
List-Post: <mailto:json@ietf.org>
List-Help: <mailto:json-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/json>, <mailto:json-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 11 Jun 2013 02:02:15 -0000

On Jun 10, 2013, at 5:16 PM, Jim Schaad <ietf@augustcellars.com> wrote:

> My intention here has nothing to do with canonicalization and everything to
> do with what constitutes a valid string from a parsing perspective.
> 
> Consider for example the case of a text file which consists of a JSON text
> string with a trailing CRLF in the file.  If trailing whitespace is allowed
> then the entire text file is a legal JSON text string.  If the trailing
> whitespace is not allowed then it is not a legal JSON text string.  I am
> just trying to clarify which is true.

The "JSON text string" (called a "string" in RFC 4627) starts and ends with a quotation mark:
      string = quotation-mark *char quotation-mark
There is no "ws" anywhere there, but there sure are quotation marks.

> This makes a difference with the argument about moving all of the values to
> the top level since then the string (ignore the quotes) "   true \r\n"
> cannot be matched if you just want to say it is a Boolean literal (i.e. the
> non-terminator true).  Instead you need to say that it can have whitespace
> on either side of it.

The current grammar does not allow whitespace around "true" for that boolean value.

> I will agree that the original intention probably is just a question of
> academic interest.  The real question I should have asked would be are
> people taking advantage of the fact.
> 
> That is the question of what about normal whitespace.

I would be interested if anyone sees anything in the document that disagrees with the above.

> I think there is a question about parsers that would accept the string
> 
> {"a":"b"}A
> 
> As I believe there are some that will (stop when you get to the end of the
> object) and some that will not.

If that is meant to be a JSON text, I cannot imagine how that is valid, but maybe I'm not creative enough.

--Paul Hoffman