java - concat Jolt 转换可在演示站点上运行;在代码中不起作用

标签 java json jolt

我想使用 Jolt 连接几个字段( com.bazaarvoice.jolt:jolt-core:0.1.1com.bazaarvoice.jolt:json-utils:0.1.1 )。下面是一个输入记录示例:

{
  "ts": 1572873208.555711,
  "uid": "CQXg712bv3ayjojRwd",
  "orig_lat": 39.997,
  "orig_long": -105.0974,
  "resp_lat": 39.0481,
  "resp_long": -77.4728
}

...这是 Jolt 变换:

[
  {
    "operation": "modify-default-beta",
    "spec": {
      "orig_location": "=concat(@(1,orig_lat),',',@(1,orig_long))",
      "resp_location": "=concat(@(1,resp_lat),',',@(1,resp_long))"
    }
  }
]

...这是 Jolt Transform Demo site 转换的输出:

{
  "ts" : 1.572873208555711E9,
  "uid" : "CQXg712bv3ayjojRwd",
  "orig_lat" : 39.997,
  "orig_long" : -105.0974,
  "resp_lat" : 39.0481,
  "resp_long" : -77.4728,
  "orig_location" : "39.997,-105.0974",
  "resp_location" : "39.0481,-77.4728"
}

我尝试以编程方式执行此操作:

String input = "{\"ts\":1572873208.555711,\"uid\":\"CQXg712bv3ayjojRwd\",\"orig_lat\":39.997,\"orig_long\":-105.0974,\"resp_lat\":39.0481,\"resp_long\":-77.4728}";

String JOLT_SPEC_LIST = "[\n" +
        "  {\n" +
        "    \"operation\": \"modify-default-beta\",\n" +
        "    \"spec\": {\n" +
        "      \"orig_location\": \"=concat(@(1,orig_lat),',',@(1,orig_long))\",\n" +
        "      \"resp_location\": \"=concat(@(1,resp_lat),',',@(1,resp_long))\"\n" +
        "    }\n" +
        "  }\n" +
        "]";

Chainr chainr = Chainr.fromSpec(JsonUtils.jsonToList(JOLT_SPEC_LIST));
Object transformed = chainr.transform(input);

transformed对象应该包含转换后的输出。由于某种原因,输出与输入相同。它不包含两个派生字段。

你能看出我做错了什么吗?

最佳答案

我错误地将字符串传递给转换方法。它应该是一个对象

我使用 Jackson 将字符串转换为对象:

ObjectMapper mapper = new ObjectMapper();
Object inputObject = mapper.readValue(input, Object.class);

...然后将该对象传递给 Chainr.transform() 方法。

关于java - concat Jolt 转换可在演示站点上运行;在代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58699645/

相关文章:

java - Java中的 vector 空间模型算法来获得两个人之间的相似度分数

java - JVM/AS 监控工具

json - 如何在NiFi中对动态json数组的值进行base64解码?

java - 在 Spring 中配置 Map 返回原型(prototype) bean

java - 时区更新程序不起作用

c# - 如何在 .Net Core 2.2 中正确使用 ConfigurationManager.GetSection()

javascript - JS : How to append array with variable into JSON?

python - 如何使用dictionary/json在yaml中添加 '-'?

arrays - JOLT数组转换: add key in all objects in list

java - 震动 : Need to split array and combine with other details