RE: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard

"Manger, James H" <James.H.Manger@team.telstra.com> Tue, 18 December 2012 05:12 UTC

Return-Path: <James.H.Manger@team.telstra.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C7D6E1F0CE4; Mon, 17 Dec 2012 21:12:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.882
X-Spam-Level:
X-Spam-Status: No, score=-0.882 tagged_above=-999 required=5 tests=[AWL=0.019, BAYES_00=-2.599, HELO_EQ_AU=0.377, HOST_EQ_AU=0.327, RELAY_IS_203=0.994]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HD0GaIU49X0C; Mon, 17 Dec 2012 21:12:55 -0800 (PST)
Received: from ipxcno.tcif.telstra.com.au (ipxcno.tcif.telstra.com.au [203.35.82.208]) by ietfa.amsl.com (Postfix) with ESMTP id A8D2A1F0CE3; Mon, 17 Dec 2012 21:12:53 -0800 (PST)
X-IronPort-AV: E=Sophos;i="4.84,307,1355058000"; d="scan'208";a="106798582"
Received: from unknown (HELO ipcani.tcif.telstra.com.au) ([10.97.216.200]) by ipocni.tcif.telstra.com.au with ESMTP; 18 Dec 2012 16:12:50 +1100
X-IronPort-AV: E=McAfee;i="5400,1158,6929"; a="52493278"
Received: from wsmsg3757.srv.dir.telstra.com ([172.49.40.85]) by ipcani.tcif.telstra.com.au with ESMTP; 18 Dec 2012 16:12:51 +1100
Received: from WSMSG3153V.srv.dir.telstra.com ([172.49.40.159]) by wsmsg3757.srv.dir.telstra.com ([172.49.40.85]) with mapi; Tue, 18 Dec 2012 16:12:51 +1100
From: "Manger, James H" <James.H.Manger@team.telstra.com>
To: Robert Sayre <sayrer@gmail.com>, James M Snell <jasnell@gmail.com>
Date: Tue, 18 Dec 2012 16:12:49 +1100
Subject: RE: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard
Thread-Topic: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard
Thread-Index: Ac3c0aLlBYpU3oEaTmCM88zjVoe+NwAAM0Nw
Message-ID: <255B9BB34FB7D647A506DC292726F6E1150408948F@WSMSG3153V.srv.dir.telstra.com>
References: <20121211150057.28223.93310.idtracker@ietfa.amsl.com> <50cb04b9.86df440a.72fe.1e20SMTPIN_ADDED_BROKEN@mx.google.com> <CABP7RbeNsZ_rBWRjou=VG+hBhUKaOz+y1a0sSChwWiHte9znnQ@mail.gmail.com> <50cb5f3c.694c420a.38fb.39afSMTPIN_ADDED_BROKEN@mx.google.com> <CAChr6SxZRc3B_HCbw76kLe2dsRSr43r-gLpfMVnCUfJTrZdTLA@mail.gmail.com> <CABP7RbfA33huBFadMeXTTEt=MkjW8-d4DFH7+GLXGurnm9sSRw@mail.gmail.com> <CAOXDeqpPE4eNy_qJpDPdPHbCQakG9-hDcNZ3Sj9r4kWedByVzQ@mail.gmail.com> <CAChr6SwtS_=iS-k4mJm1vHjEvvGVzay5jDYeGheqsPZqO-89CQ@mail.gmail.com> <EABB8F51-C3B4-49F5-8672-5C2ABAC7043A@mnot.net> <CAChr6Sy-Xc8vC6FabFmdseR7xfQ-6t9hARunWjYgt6FqjmoBWg@mail.gmail.com> <CABP7Rbd7w-7-8+q0T7WciBp6NU7c2uJjmRGiLFjxkc52P5KLdw@mail.gmail.com> <CAChr6SyV-kDLYnDXXjW5GD7KZ1brBYLmvO-5TkODGtcHOf2rmg@mail.gmail.com>
In-Reply-To: <CAChr6SyV-kDLYnDXXjW5GD7KZ1brBYLmvO-5TkODGtcHOf2rmg@mail.gmail.com>
Accept-Language: en-US, en-AU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US, en-AU
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Mailman-Approved-At: Tue, 18 Dec 2012 09:08:50 -0800
Cc: Mark Nottingham <mnot@mnot.net>, IETF Discussion <ietf@ietf.org>, IETF Apps Discuss <apps-discuss@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ietf>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 18 Dec 2012 05:12:55 -0000

If we were starting from scratch and defining JSON Pointer again I would argue for distinguishing array indices and object names in the syntax. For instance, prefix an object name with "/" and an array index with ":".

   json-pointer = *segment
   segment = "/" name  /  ":" index
   name = *( unescaped / escaped )
   unescaped = %x00-2E / %x30-39 / %x3B-7D / %x7F-10FFFF
   escaped = "~" ( "0" / "1" / "2" )
   index = "0" / %x31-39 *(%x30-39) / "-"

1. It makes parsing marginally harder: you cannot just split on "/" and unescape each segment.
2. It doesn't make much difference for selecting a value from some JSON, or for finding a spot to insert a new value.
3. It would allow you to automatically create object *or array* ancestors when setting a new value (eg adding 23 at /a:0/b:0 to {} could give {"a":[{"b":[23]}]}).
4. It might encourage better validation of pointers, but that is probably wishful thinking.

But JSON Pointer drafts have used the /{name|index} format for a year. There are a bunch of implementations. The difference is minor in most circumstances. So while I would be happy to change, I am also comfortable staying with the current pointer syntax.


> There's no good reason for it to be that way, is there?

I don't think so.
 
--
James Manger