[erlang-questions] javascript . notation to fetch objects from JSON decode_string/1

Richard A. O'Keefe ok@REDACTED
Thu Aug 14 06:12:23 CEST 2008


On 14 Aug 2008, at 12:27 am, Bharani wrote:
> so that i can simple say get(<json string>,"obj1.obj2.field")
>
> is this right way to do or can any one point out best practices

If you are *given* things like "obj1.obj2.field", this is not a
bad way to do it.  But what if you have
	["foo",{"bar":[1,2,{"ugh":77},4]}]
and you want the 77?

For the sake of argument, let's suppose you are using a JSON
representation where

	number -> number
	"string" -> <<"string">
	[X1,...,Xn] -> [X'1,...,X'n]
	{"l1":X1,...,"ln":Xn} -> [{<<"l1">>,X'1},...,{<<"ln">>,X'n}]
	{} -> [{}]

Then the path to the 77 would be
	[2,<<"bar">>,3,<<"ugh">>]
You _can't_ handle this by splitting "2.bar.3.ugh" into tokens,
because "2" and "3" are perfectly good field names in JSON.
Come to think of it,
	{"obj1.obj2.field":137}
is a perfectly good JSON object; nothing anywhere says that a
JSON field label cannot contain dots.





More information about the erlang-questions mailing list