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

现在我想通过使用 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: ... }

请参阅有关简化映射样式的文档,它对这种情况有提示。

免责声明:我是Jsonix的作者。

相关内容

最新更新