Jsonix Defining Custom Simple Types
by Alexey Valikov
HTML
<script src="https://rawgithub.com/highsource/jsonix/master/dist/Jsonix-all.js"></script>
JavaScript
var MyModule = {
name: 'MyModule',
typeInfos: [new(Jsonix.Class(Jsonix.Schema.XSD.AnySimpleType, {
name: 'MyModule.YesNo',
typeName: new Jsonix.XML.QName('urn:my', 'YesNo'),
print: function (value) {
Jsonix.Util.Ensure.ensureBoolean(value);
return value ? 'yes' : 'no';
},
parse: function (text) {
Jsonix.Util.Ensure.ensureString(text);
if (text.toLowerCase() === 'yes') {
return true;
} else if (text.toLowerCase() === 'no') {
return false;
} else {
throw "Either [yes] or [no] expected as boolean value.";
}
},
CLASS_NAME: 'MyModule.YesNo'
}))()],
elementInfos: [{
elementName: 'data',
typeInfo: 'MyModule.YesNo'
}]
};
var context = new Jsonix.Context([MyModule]);
var unmarshaller = context.createUnmarshaller();
var data = unmarshaller.unmarshalString('<data>yes</data>');
console.log(data);