使用数字作为属性名称构造JSON

问题描述

informatica CAI内部发生以下问题。在这里,我只能访问Xquery来编辑变量和构造数据。

我正在尝试将JSON的属性名称映射为数字。该问题的可读示例是输入/温度/输出变量$ json

等于

{
   "Person":
   {
      "Name": "Jerry","Age": "42"
   }
}

一个临时变量$ MapTable

{
   "Name": "3456_1","Age": "3456_2"
}    

当尝试使用Xquery映射$ MapTable中的数字以代替$ json中的“名称”和“年龄”时,我收到一个 “无效的元素名称。无效的QName {3456_1}”错误。”我认为这是由于XML名称规定所致。

有人知道这种解决方法吗,所以我可以使$ json等于

{
   "Person":
   {
       "3456_1": "Jerry","3456_2": "42"
   }
}

注意:我已经在informatica的Cloud Application Integration论坛上发布了相同的问题。

解决方法

代替以正确的json属性名称结尾,我可以使用xquery生成这样的json { “人”: { “ __3456_1”:“杰里”, “ __3456_2”:“ 42” } } 双下划线前缀使informatica不会崩溃。然后,我们可以在包含json的变量上使用函数“ fn:replace”,以删除其双下划线:fn:replace(“ __”,“”),为我们提供所需的JSON。

这不是一个完美的解决方案,因为从一个json映射到另一个json的脚本仍未创建。