json Conditional Jolt Transform [关闭]

2lpgd968  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(60)

已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

18天前关门了。
Improve this question
我想写一个jolt transform,如果类型是Polygon,它将坐标的值放入一个数组“coordinates”,如果类型是Point,它将坐标的值放入属性“x”,“y”,“z”。我想我已经接近我目前的规范了,但是除了在&之后尝试不同的值之外,我不确定。
输入Json1

{
  "features": [
    {
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              11.1,
              111.1
            ],
            [
              22.2,
              222.2
            ],
            [
              33.3,
              333.3
            ]
          ]
        ]
      }
    }
  ]
}

字符串
输入Json2

{
  "features": [
    {
      "geometry": {
        "type": "Point",
        "coordinates": [
          1.1,
          2.2,
          3.3
        ]
      }
    }
  ]
}


Spec

[
  {
    "operation": "shift",
    "spec": {
      "features": {
        "*": {
          "geometry": {
            "type": {
              "Polygon": {
                "coordinates": {
                  "*": "[&4].coordinates"
                }
              },
              "Point": {
                "coordinates": {
                  "0": "[&4].x",
                  "1": "[&4].y",
                  "2": "[&4].z"
                }
              }
            }
          }
        }
      }
    }
  }
]


预期输出:点

[ {
  "x" : 1.1,
  "y" : 2.2,
  "z" : 3.3
} ]


预期输出:多边形

[ {
  "coordinates" : [ [ 11.1, 111.1 ], [ 22.2, 222.2 ], [ 33.3, 333.3 ] ]
} ]


我尝试了上面的规范,并期望得到显示坐标或x,y,z的对象的输出。当我将[&3]替换为[&3]并删除条件 shell 时,我能够让它单独工作每种情况,但有了它,我知道有一些我没有正确处理的级别的复杂性。

mepcadol

mepcadol1#

你需要在类型键值后面引用坐标的值,它是2 level up @(2,coordinates):

[
  {
    "operation": "shift",
    "spec": {
      "features": {
        "*": {
          "geometry": {
            "type": {// level 2 where coordinates is located 
              "Polygon": {
                "@(2,coordinates)": {
                  "*": "[&5].coordinates"
                }
              },
              "Point": { //level 1
                "@(2,coordinates)": { // level 0
                  "0": "[&5].x",
                  "1": "[&5].y",
                  "2": "[&5].z"
                }
              }
            }
          }
        }
      }
    }
  }
]

字符串

相关问题