Re: [Json] JSON Schema Language

Nico Williams <nico@cryptonector.com> Tue, 07 May 2019 15:42 UTC

Return-Path: <nico@cryptonector.com>
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 B863112016E for <json@ietfa.amsl.com>; Tue, 7 May 2019 08:42:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Level:
X-Spam-Status: No, score=-2.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cryptonector.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ss8IM94zaVjW for <json@ietfa.amsl.com>; Tue, 7 May 2019 08:42:09 -0700 (PDT)
Received: from eastern.maple.relay.mailchannels.net (eastern.maple.relay.mailchannels.net [23.83.214.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D5C3C120144 for <json@ietf.org>; Tue, 7 May 2019 08:42:08 -0700 (PDT)
X-Sender-Id: dreamhost|x-authsender|nico@cryptonector.com
Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id DDD158C28A0; Tue, 7 May 2019 15:42:07 +0000 (UTC)
Received: from pdx1-sub0-mail-a48.g.dreamhost.com (100-96-79-4.trex.outbound.svc.cluster.local [100.96.79.4]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 3C9338C2576; Tue, 7 May 2019 15:42:07 +0000 (UTC)
X-Sender-Id: dreamhost|x-authsender|nico@cryptonector.com
Received: from pdx1-sub0-mail-a48.g.dreamhost.com ([TEMPUNAVAIL]. [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.17.2); Tue, 07 May 2019 15:42:07 +0000
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|nico@cryptonector.com
X-MailChannels-Auth-Id: dreamhost
X-Keen-Bored: 4864379d3b737830_1557243727722_93180319
X-MC-Loop-Signature: 1557243727722:1917675356
X-MC-Ingress-Time: 1557243727721
Received: from pdx1-sub0-mail-a48.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a48.g.dreamhost.com (Postfix) with ESMTP id 1254E7FD9D; Tue, 7 May 2019 08:42:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cryptonector.com; h=date :from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to:content-transfer-encoding; s= cryptonector.com; bh=Hg7Ogi/sQxeJm76mXmQx3AlfSho=; b=F8azpvkmjs6 nfyajSCtX27AQCoUDU8pLHmrfu/U7tYgAS0CrzIbu14GWph5njCQLfd9Ysv+ZVKF xMHjExblTge+CYlUpg9RsnBWq9VCCJM6iCygNUWboYG33snbJ0Yj56a1jf7ayQgW rB/bnZITaUd6gQWLRReiT7nm01nFce6Y=
Received: from localhost (unknown [24.28.108.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by pdx1-sub0-mail-a48.g.dreamhost.com (Postfix) with ESMTPSA id D92F77FD99; Tue, 7 May 2019 08:42:04 -0700 (PDT)
Date: Tue, 07 May 2019 10:42:02 -0500
X-DH-BACKEND: pdx1-sub0-mail-a48
From: Nico Williams <nico@cryptonector.com>
To: Anders Rundgren <anders.rundgren.net@gmail.com>
Cc: Tim Bray <tbray@textuality.com>, json@ietf.org
Message-ID: <20190507154201.GP21049@localhost>
References: <CAJK=1RjV1uv0eOdtFZ8cKn-FfCwCiGP5r2hOz1UamiM6YV4H1A@mail.gmail.com> <CAHBU6itE8kub1qtdRoW8BqxaOmzMv=vUo1aDeuAr3HX141NUGg@mail.gmail.com> <77994bdb-a400-be90-5893-b846a8e13899@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
In-Reply-To: <77994bdb-a400-be90-5893-b846a8e13899@gmail.com>
User-Agent: Mutt/1.9.4 (2018-02-28)
X-VR-OUT-STATUS: OK
X-VR-OUT-SCORE: -100
X-VR-OUT-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeduuddrkedtgdeljecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvpdfftffgtefojffquffvnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpeffhffvuffkfhggtggugfgjfgesthekredttderudenucfhrhhomheppfhitghoucghihhllhhirghmshcuoehnihgtohestghrhihpthhonhgvtghtohhrrdgtohhmqeenucfkphepvdegrddvkedruddtkedrudekfeenucfrrghrrghmpehmohguvgepshhmthhppdhhvghloheplhhotggrlhhhohhsthdpihhnvghtpedvgedrvdekrddutdekrddukeefpdhrvghtuhhrnhdqphgrthhhpefpihgtohcuhghilhhlihgrmhhsuceonhhitghosegtrhihphhtohhnvggtthhorhdrtghomheqpdhmrghilhhfrhhomhepnhhitghosegtrhihphhtohhnvggtthhorhdrtghomhdpnhhrtghpthhtohepnhhitghosegtrhihphhtohhnvggtthhorhdrtghomhenucevlhhushhtvghrufhiiigvpedt
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/json/vG8gWVEToeJmWTmiDEq12Ss-OKs>
Subject: Re: [Json] JSON Schema Language
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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, 07 May 2019 15:42:11 -0000

On Tue, May 07, 2019 at 06:44:49AM +0200, Anders Rundgren wrote:
> On 2019-05-07 00:38, Tim Bray wrote:
> > I mostly fail to understand the debate about jq and integers and so
> > on. Clearly, the following is a valid JSON text and will be parsed
> > successfully by any JSON parser.
> > 
> > {
> >   "foo": 3.0
> > }
> > 
> > I imagine that most schema-driven software would first deserialize
> > it into a tree, probably something like Jackson ObjectMapper's
> > JsonNode, and then apply schema constructs to the tree.   I would
> > hope that a sane schema would accept this whether a top-level "foo"
> > was required to be an integer or double or most other flavors of
> > number, and reject it if "foo" was required to be a string or
> > boolean.
> 
> Here we have a little problem.  There are already quite popular
> parsers out there flagging 3.0 as an invalid integer when explicitly
> parsing for an integer[*].  Personally, I consider this as right thing
> to do in a schema as well.  Letting one or two rotten eggs (=JSON
> serializers that output Numbers that also represent exact integers
> with fractions) set the bar for the other 99.9% doesn't seem right to
> me.

Those parsers are broken.

> > Put another way, no JSON schema spec can change the definition of
> > what JSON is, or make the built-in type system anything but what it
> > is.
> 
> I don't think anybody is actually proposing that; only mapping things
> that doesn't have a specific representation in JSON like integers.

Integers do have a specific representation in JSON, and anything that
precludes generic encoders that might emit 10.0 where a peer parser will
reject that as not-an-integer *is* a change to JSON.

Nico
--