[oslc-cm] [oslc-core] Problem with OSLC v1 style JSON representations
Andre Weinand
weinand at acm.org
Thu Mar 4 08:54:35 EST 2010
Hi Dave,
The following page shows how multi-valued attributes translate into JSON arrays:
http://open-services.net/bin/view/Main/CmJsonFormatV1
The use of JSON arrays results in a nice isomorphism to the collection construct we use for multi-valued attributes in the XML format.
Regards,
--andre
On 04.03.2010, at 12:00, Patrick Streule wrote:
> Hi Dave,
>
>> nicejson = "({\"foo\" \: \"bar\"})";
>> niceobject = eval(nicejson);
>> document.write("<p>niceobject.foo=" + niceobject.foo + "</p>");
>
> I agree that this nice, but allowing this in general would impose JS
> language restrictions on property names. Not only the prefix notation is
> problematic, also fully qualified identifiers like
> 'com.example.properties.foo' would not work, and there may also be
> conflicts with reserved words in JS.
>
>> // colons in JSON field names does not work (prefixed property
> isundefined)
>> annoyingjson = "({\"prefix:foo\" \: \"bar\"})";
>> annoyingobject = eval(annoyingjson);
>> document.write("<p>annoyingobject.prefix:foo=" + annoyingobject.foo
>> + "</p>");
>
> You would write
> document.write("<p>annoyingobject.prefix:foo=" + annoyingobject
> ["prefix:foo"] + "</p>");
>
> This is only slightly longer than the dot notation.
>
>> // two properties with same name does not work (eval will fail)
>> annoyingjson2 = "({\"foo\" \: \"bar\", \"foo\" \: \"baz\"})";
>> annoyingobject2 = eval(annoyingjson2);
>> document.write("<p>annoyingobject1.foo=" + annoyingobject1.foo +
> "</p>");
>
> IMO, we should leverage JSON's support for arrays here, and not try to
> translate an XML or RDF representation too literally to JSON. So the
> example would be:
>
> annoyingjson2 = "({\"foo\" : [\"bar\", \"baz\"]})";
> annoyingobject2 = eval(annoyingjson2);
> document.write("<p>annoyingobject1.foo=" + annoyingobject1.foo +
> "</p>");
> for (var i= 0; i < annoyingobject1.foo.length; i++) {
> document.write(annoyingobject1.foo[i]);
> }
>
> Regards,
> Patrick
>
>
> _______________________________________________
> Oslc-Cm mailing list
> Oslc-Cm at open-services.net
> http://open-services.net/mailman/listinfo/oslc-cm_open-services.net
More information about the Oslc-Cm
mailing list