当前位置: 首页 > 知识库问答 >
问题:

规范中的JOLT转换数组索引问题

井通
2023-03-14

如果我在输入中有集合,则以数组形式出现。如果有缺失值,我正在使用“修改默认测试版”来写入默认值。我遇到的唯一问题是 FacTie 正在生成多个,因为这不是我所期望的。

具有特征数组的输入 Json:

    {
  "type": "Collection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "coordinates": [
          121.63646666666666,
          29.10262638888889
        ]
      },
      "properties": {
        "clientId": "1123",
        "category": "44500",
        "datetime_created": " 2018-11-29 10:48:43",
        "facTieSk": "-1"
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "coordinates": [
          121.63646666666666,
          29.10262638888889
        ]
      },
      "properties": {
        "clientId": "1124",
        "category": "44500",
        "datetime_created": " 2018-11-29 10:48:43",
        "facTieSk": "-1"
      }
    }
  ]
}

规格:

[
  {
    "operation": "shift",
    "spec": {
      "features": {
        "*": {
          "properties": {
            "@(1,type)": {
              "Feature": {
                "@(3,clientId)": "Composite[&4].FacComp.Fac.SysSource",
                "@(3,geometry)": {
                  "@coordinates": {
                    "*": "Composite[&6].FacComp.geometry.coordinates[]"
                  }
                },
                "@(2,category)": "Composite[&4].FacComp.Fac.Category",
                "@(2,datetime_created)": ["Composite[&4].FacComp.Fac.DatetimeCreated", "Composite[&4].FacComp.FacTie[&4].DatetimeCreated"],
                "@(2,facTieSk)": "Composite[&4].FacComp.FacTie[&4].FacTieSk"
              }
            }
          }
        }
      }
    }
        },
  {
    "operation": "modify-default-beta",
    "spec": {
      "Composite": {
        "*": {
          "FacComp?": {
            "Fac": {
              "FacSk": "-1",
              "CoordBasis": "2"
            },
            "FacTie": {
              "*": {
                "FacTieSk": "-1",
                "TieFromSk": "-1",
                "TieToSk": "-1",
                "TieToEntity": "FAC"
              }
            }
          }
        }
      }
    }
        }
    ]

预期输出:

{
    "Composite": [{
            "FacComp": {
                "geometry": {
                    "coordinates": [121.63646666666666, 29.10262638888889]
                },
                "Fac": {
                    "Category": "44500",
                    "DatetimeCreated": " 2018-11-29 10:48:43",
                    "FacSk": "-1",
                    "CoordBasis": "2"
                },
                "FacTie": [{
                        "DatetimeCreated": " 2018-11-29 10:48:43",
                        "FacTieSk": "-1",
                        "TieFromSk": "-1",
                        "TieToSk": "-1",
                        "TieToEntity": "FAC"
                    }
                ]
            }
        }, {
            "FacComp": {
                "geometry": {
                    "coordinates": [121.63646666666666, 29.10262638888889]
                },
                "Fac": {
                    "Category": "44500",
                    "DatetimeCreated": " 2018-11-29 10:48:43",
                    "FacSk": "-1",
                    "CoordBasis": "2"
                },
                "FacTie": [{
                        "DatetimeCreated": " 2018-11-29 10:48:43",
                        "FacTieSk": "-1",
                        "TieFromSk": "-1",
                        "TieToSk": "-1",
                        "TieToEntity": "FAC"
                    }
                ]
            }
        }
    ]
}

相反,我得到低于输出(请参阅第二个元素中的FacTie有2个项目而不是一个。

{
  "Composite" : [ {
    "FacComp" : {
      "geometry" : {
        "coordinates" : [ 121.63646666666666, 29.10262638888889 ]
      },
      "Fac" : {
        "Category" : "44500",
        "DatetimeCreated" : " 2018-11-29 10:48:43",
        "FacSk" : "-1",
        "CoordBasis" : "2"
      },
      "FacTie" : [ {
        "DatetimeCreated" : " 2018-11-29 10:48:43",
        "FacTieSk" : "-1",
        "TieFromSk" : "-1",
        "TieToSk" : "-1",
        "TieToEntity" : "FAC"
      } ]
    }
  }, {
    "FacComp" : {
      "geometry" : {
        "coordinates" : [ 121.63646666666666, 29.10262638888889 ]
      },
      "Fac" : {
        "Category" : "44500",
        "DatetimeCreated" : " 2018-11-29 10:48:43",
        "FacSk" : "-1",
        "CoordBasis" : "2"
      },
      "FacTie" : [ {
        "FacTieSk" : "-1",
        "TieFromSk" : "-1",
        "TieToSk" : "-1",
        "TieToEntity" : "FAC"
      }, {
        "DatetimeCreated" : " 2018-11-29 10:48:43",
        "FacTieSk" : "-1",
        "TieFromSk" : "-1",
        "TieToSk" : "-1",
        "TieToEntity" : "FAC"
      } ]
    }
  } ]
}

共有1个答案

卢磊
2023-03-14

第二部分FacComp中有一个空值(在查看第一个规范之后的输出时),因此在您的两个规范之间添加以下代码以删除空值:

  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=recursivelySquashNulls"
    }
  },
 类似资料:
  • 我有以下输入json: 输出JSON应如下所示: 任何人都可以就如何为上述内容构建适当的 Bump 规范提供任何指导吗? 非常感谢您的帮助 ^_^

  • 我正在尝试用以下规格进行JOLT换班操作,这是不起作用的。不知道我犯了什么错误。在这种情况下需要帮助。输出JSON作为一个对象来代替Array,shift也不能按预期工作。

  • 我需要通过使用JOLT规范来转换JSON结构。我用https://jolt-demo.appspot.com来测试以下内容。 我还可以通过另一个JOLT规范运行OUTPUT,然后检索我所需的JSON输出,但我仍然不知道JOLT规格应该是什么样子,我已经看过了示例,没有进一步了解上面提到的内容。 输入- 这是输入 JSON 这是我目前拥有的雷震天赋 给出以下输出 相反,我要求输出是

  • 我正在尝试为以下输入摇动转换规范: 预期输出如下: 我的规格: 我是新手,尝试了不同的方法,但不能得到想要的输出。任何帮助都非常感谢。 谢谢你

  • 我目前的输入 JSON 是 我想要如下所示的输出 JSON。我只需要添加一个额外的键并值“key5” 预期产量 并提及如何覆盖key4的值 请帮我找到这方面的Jolt Json规范。 以下是我使用的规格

  • Jolt对我来说是新的,我一直在与这个问题作斗争,直到我创建这篇文章。 我想把这个: 进入这个 每个属性的值可以是1值,也可以是未知数量值的数组。 我将以下json更改为第一个json中的内容: RHS上的属性名称是通用的,属性值的数量也可能不同。提前感谢您抽出时间来帮助我。