jsonix:元素 [] 在此上下文中未知,无法确定其类型
jsonix: Element [] is not known in this context, could not determine its type
按照 using 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
};
};
现在我想通过使用 jsonix 和上面的 json-mapping-object:
生成一个 xml-String
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 中缺少命名空间?如果是这样,我该如何解决?提前致谢;
您的映射指定了命名空间,但您的 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: ... }
请参阅有关 simplified mapping style 的文档,其中有针对这种情况的提示。
免责声明:我是 Jsonix 的作者。
按照 using 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
};
};
现在我想通过使用 jsonix 和上面的 json-mapping-object:
生成一个 xml-Stringvar 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 中缺少命名空间?如果是这样,我该如何解决?提前致谢;
您的映射指定了命名空间,但您的 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: ... }
请参阅有关 simplified mapping style 的文档,其中有针对这种情况的提示。
免责声明:我是 Jsonix 的作者。