jsonix: Элемент [] не известен в этом контексте, не может определить его тип
Следуя инструкциям по использованию jsonix-schema-compiler, я успешно получил объект сопоставления для xsd-файла; очень краткое содержание которого:
var IdentPerson_Module_Factory = function () {
var IdentPerson = {
name: 'IdentPerson',
defaultElementNamespaceURI: 'http:\/\/www.some.domain.de\/mynamespace',
typeInfos: [{
....
....
}],
elementInfos: [{
elementName: 'Person',
typeInfo: '.Person'
}]
};
return {
IdentPerson: IdentPerson
};
};
Теперь я хочу создать xml-String, используя jsonix и вышеуказанный json-mapping-object:
var context = new Jsonix.Context([IdentPerson]);
var marshaller = context.createMarshaller();
var xmldoc = marshaller.marshalString(myJsonString);
Первые строки myJsonString следующие:
{ Person:
{ aliasName:
{ titel: '',
namenssuffix: '',
familyname: [Object],
.....
.....
}
Завершая с ошибкой:
Message: Element [Person] is not known in this context, could not determine its type.
Stack: Error: Element [Person] is not known in this context, could not determine its type.
at Object.Jsonix.Binding.Marshalls.Element.Jsonix.Class.marshalElement (/home/datarocket/datarocket.hub/src/node_modules/jsonix/jsonix.js:1881:10)
Я думаю, это из-за отсутствия пространства имен в myJsonString? Если так, как я могу это исправить? Заранее спасибо;
1 ответ
Решение
Ваше отображение задает пространство имен, а ваш объект JSON - нет.
Пытаться:
var context = new Jsonix.Context(mappings, {
namespacePrefixes: {
"http://www.some.domain.de/mynamespace": "tns"
}
});
{ 'tns:Person': ... }
Или же:
var context = new Jsonix.Context(mappings, {
namespacePrefixes: {
"http://www.some.domain.de/mynamespace": ""
}
});
{ Person: ... }
Пожалуйста, ознакомьтесь с документацией по упрощенному стилю отображения, у него есть подсказка именно для этого случая.
Отказ от ответственности: я автор Jsonix.