- From: Cameron McCormack <cam@mcc.id.au>
- Date: Mon, 25 Jun 2012 11:41:19 +1000
- To: David Bruant <bruant.d@gmail.com>
- CC: "public-script-coord@w3.org" <public-script-coord@w3.org>
David Bruant: > My reading of the current state of the spec is that > JSON.stringify(anyEvent) is '{}' which is close to useless. This is true > for any WebIDL compliant object. > ECMAScript 5 introduced JSON and the toJSON property. Could it be > considered to make something useful out of WebIDL compliant objects > using this property? I've added "serializers" to the spec, which allow you to define a toJSON method, like stringifiers let you define a toString. interface Whatever { readonly attribute DOMString blah; serializer; }; then you define in prose what the serialization behaviour for Whatever is. If you've got an operation that returns a value you want to be the serialization behaviour, you can stick it on there: interface Something { serializer Whatever getWhatever(); }; You can also define serialization behaviour inline in the IDL, which I imagine will cover common cases: interface Whatever { readonly attribute DOMString blah; readonly attribute long count; readonly attribute boolean isIt; serializer = { blah, count }; }; => toJSON returns { blah: String, count: Number } interface Whatever { readonly attribute DOMString blah; readonly attribute long count; readonly attribute boolean isIt; serializer = { attribute }; }; => toJSON returns { blah: String, count: Number, isIt: Boolean } i.e. all attributes interface NamedStrings { getter DOMString get(DOMString name); setter DOMString set(DOMString name, DOMString value); serializer = { getter }; }; => toJSON returns an object of the named properties interface List { getter DOMString get(unsigned long index); setter void set(unsigned long index, DOMString value); readonly attribute unsigned long length; serializer = [ getter ]; }; => toJSON returns an Array of the indexed properties http://dev.w3.org/2006/webapi/WebIDL/#idl-serializers http://dev.w3.org/2006/webapi/WebIDL/#es-serializer http://dev.w3.org/cvsweb/2006/webapi/WebIDL/Overview.xml.diff?r1=1.546;r2=1.549;f=h
Received on Monday, 25 June 2012 01:41:55 UTC