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);