Jsonix Defining Complex Types By Extension
HTML
<script src="https://rawgithub.com/highsource/jsonix/master/dist/Jsonix-all.js"></script>
JavaScript 1.7
var MyModule = {
name: 'MyModule',
typeInfos: [{
type: 'classInfo',
localName: 'BaseType',
propertyInfos: [{
type: 'element',
name: 'alpha',
elementName: 'Alpha',
typeInfo: 'String'
}, {
type: 'element',
name: 'beta',
elementName: 'Beta',
collection: true,
typeInfo: 'Integer'
}]
}, {
type: 'classInfo',
localName: 'ExtendedType',
baseTypeInfo: 'MyModule.BaseType',
propertyInfos: [{
type: 'element',
name: 'gamma',
elementName: 'Gamma',
typeInfo: 'AnyURI'
}, {
type: 'element',
name: 'delta',
elementName: 'Delta',
collection: true,
typeInfo: 'Date'
}]
}],
elementInfos: [{
elementName: 'Base',
typeInfo: 'MyModule.BaseType'
}, {
elementName: 'Extended',
typeInfo: 'MyModule.ExtendedType'
}]
};
var context = new Jsonix.Context([MyModule]);
var unmarshaller = context.createUnmarshaller();
var unmarshalledBase = unmarshaller.unmarshalString('<Base><Alpha>one</Alpha><Beta>2</Beta><Beta>3</Beta></Base>');
debugger;
console.log(unmarshalledBase);
var unmarshalledExtended = unmarshaller.unmarshalString('<Extended><Alpha>one</Alpha><Beta>2</Beta><Beta>3</Beta><Gamma>urn:four</Gamma><Delta>2005-06-07</Delta><Delta>2008-09-10</Delta></Extended>');
console.log(unmarshalledExtended);