[getdns-api] Getting from dicts by subscript operator

Willem Toorop willem at nlnetlabs.nl
Mon Oct 5 13:07:06 UTC 2015


Op 23-09-15 om 21:37 schreef Joe Hildebrand (jhildebr):
> On 9/23/15, 7:37 AM, "Shane Kerr" <shane at time-travellers.org> wrote:
>> I think that the last one is "correct" JSON Pointer syntax if I
>> understand the RFC, but I confess that the one above it looks easier to
>> read to me. :)
> 
> The last one.  I know it's slightly strange to a C programmer, but to a JavaScript programmer, it's not *too* strange, where a['foo'] === a.foo.  The advantage here is that in a getdns wrapper that is treating the results as JSON, you could use an existing json-pointer implementation.  Also, you don't have to worry about specifying the BNF for the query syntax, thinking about the edge cases, and worrying about the security consequences quite as much.

Good point.  Since it has to become part of the spec, it is easier to
reference an existing syntax (especially since it is standardized) than
to describe a new one.  I have come up with the following wording, to
append to the first subsection of section 2. (so just before 2.1. starts)

	When the name parameter to the getdns_dict_get_ functions, starts with
a '/' (%x2F) character, it is interpreted as a JSON Pointer as described
in RFC6901, and will then be used to dereference the nested data
structures to get to the requested data type.


And at the end of section 2.1.


	When the name parameter to the getdns_dict_set_ functions, starts with
a '/' (%x2F) character, it is interpreted as a JSON Pointer as described
in RFC6901, and will then be used to dereference the nested data
structures to get to the requested data type.


Comments or better wordings are welcome.

I think the examples in the spec could also benefit from using JSON
Pointer syntax.  They are likely to become much shorter and therefor
more readable and easier to digest.  Take for example this alternative
for the example in section 6.4 (I started with the shortest):

https://github.com/getdnsapi/getdns/blob/features/json-pointers/spec/example/synchronous-json-pointer.c

What do you think?

-- Willem



More information about the Users mailing list