DataSchema Utility: Enforcing DataTypes
DataSchema supports a
parser
property that enforces type conversion on data as the schema is being applied. The parser
property can point to one of the following types of parsing functions:
- A DataType subclass parse function, like
Y.DataType.Number.parse
- A registered shortcut to a DataType subclass parse function, like
"number"
- A custom function
Use the parser
property in your schema's resultFields
definition to point to a parsing function. Parsing your data in this manner is essential if your numerical or date data comes over the wire as JSON, since all the values will be strings.
YUI().use("datatype", "dataschema", function(Y) { var data_in = { "results":[ {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"}, {"string":"bat", "number":"2", "date":"Feb 2, 2002"}, {"string":"camel", "number":"3", "date":"March 3, 2003"} ] }, schema = { resultListLocator: "results", resultFields: [ // needs no parsing "string", // point parser to built-in function shortcut {key:"number", parser: "number"}, // point parser to built-in function {key:"date", parser: Y.DataType.Date.parse}] }, data_out = Y.DataSchema.JSON.apply(schema, data_in).results; });
YUI().use("datatype", "dataschema", function(Y) { var data_in = { "results":[ {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"}, {"string":"bat", "number":"2", "date":"Feb 2, 2002"}, {"string":"camel", "number":"3", "date":"March 3, 2003"} ] }, schema = { resultListLocator: "results", resultFields: [ // needs no parsing "string", // point parser to built-in function shortcut {key:"number", parser: "number"}, // point parser to built-in function {key:"date", parser: Y.DataType.Date.parse}] }, data_out = Y.DataSchema.JSON.apply(schema, data_in).results; });