有什么方法可以使用 Jolt 编写空 json 转换(通过 orig 文档)?
is there any way to write a null json transformation (passes through orig document) using Jolt?
您知道 XSLT 和其他 XML 处理语言如何支持 "null transformation" 通过未修改的方式传递文档吗?
我想为 Jolt(Apache Camel 和其他地方使用的一个非常好的 JSON 转换库)做同样的事情。
我可以使用 JOLT 的 "insert default" 功能并在文档的顶层粘贴一些无害的 JSON 标签和值..这几乎就是我想要的。但是我无法弄清楚如何通过 JOLT 传递文档但保持不变。
你问我为什么要这样做?我们正在开发一个流数据管道,我必须验证传入的字符串是否有效 JSON... Jolt 免费为我做这件事,但在某些情况下我不想胡乱处理文档。所以,我想使用 JOLT 作为管道中的一个步骤,但(在某些情况下)让它对输入的 JSSON 文档不做任何事情。
OOTB Jolt 包含 5 "operations",可应用于输入水合 Json。其中 4 个(默认、删除、排序、基数)是突变操作/修改提供的水化 Json。我给那 4 个空 "spec",它们什么都不做,你的数据会 "pass thru".
"shift" 操作不会改变给定的输入。相反,它将 "copies" 数据从 "input" 转移到一个新的 "output" map/list。如果您不提供 "shift" 规范,则它不会复制任何内容。
因此,从你的问题来看,你似乎在谈论"shift"。使用 shift,你必须明确地传递所有你 "want to keep" 的东西。
根据您的数据,这可能很糟糕或很容易,因为您可以跨转移复制非常大的数据块。
示例,用于 jolt 演示站点上的 "inception" 示例。 http://jolt-demo.appspot.com/#inception
此规范基本上通过输入,将 "rating" 的整个嵌套映射处理到输出。
[
{
"operation": "shift",
"spec": {
"rating": "rating"
}
}
]
可以用通配符概括为:
规范
[
{
"operation": "shift",
"spec": {
"*": "&"
}
}
]
另一种选择是创建自定义转换器。
package com.example;
public class NullTransform implements Transform{
@Override
public Object transform(Object input) {
return input;
}
}
然后从 chainr jolt 中引用它,如下所示
[
{
"operation": "com.example.NullTransform"
}
]
您仍然会产生 deserializaion/serialization 开销,但没有其他代码是 运行。
您知道 XSLT 和其他 XML 处理语言如何支持 "null transformation" 通过未修改的方式传递文档吗?
我想为 Jolt(Apache Camel 和其他地方使用的一个非常好的 JSON 转换库)做同样的事情。
我可以使用 JOLT 的 "insert default" 功能并在文档的顶层粘贴一些无害的 JSON 标签和值..这几乎就是我想要的。但是我无法弄清楚如何通过 JOLT 传递文档但保持不变。
你问我为什么要这样做?我们正在开发一个流数据管道,我必须验证传入的字符串是否有效 JSON... Jolt 免费为我做这件事,但在某些情况下我不想胡乱处理文档。所以,我想使用 JOLT 作为管道中的一个步骤,但(在某些情况下)让它对输入的 JSSON 文档不做任何事情。
OOTB Jolt 包含 5 "operations",可应用于输入水合 Json。其中 4 个(默认、删除、排序、基数)是突变操作/修改提供的水化 Json。我给那 4 个空 "spec",它们什么都不做,你的数据会 "pass thru".
"shift" 操作不会改变给定的输入。相反,它将 "copies" 数据从 "input" 转移到一个新的 "output" map/list。如果您不提供 "shift" 规范,则它不会复制任何内容。
因此,从你的问题来看,你似乎在谈论"shift"。使用 shift,你必须明确地传递所有你 "want to keep" 的东西。
根据您的数据,这可能很糟糕或很容易,因为您可以跨转移复制非常大的数据块。
示例,用于 jolt 演示站点上的 "inception" 示例。 http://jolt-demo.appspot.com/#inception
此规范基本上通过输入,将 "rating" 的整个嵌套映射处理到输出。
[
{
"operation": "shift",
"spec": {
"rating": "rating"
}
}
]
可以用通配符概括为: 规范
[
{
"operation": "shift",
"spec": {
"*": "&"
}
}
]
另一种选择是创建自定义转换器。
package com.example;
public class NullTransform implements Transform{
@Override
public Object transform(Object input) {
return input;
}
}
然后从 chainr jolt 中引用它,如下所示
[
{
"operation": "com.example.NullTransform"
}
]
您仍然会产生 deserializaion/serialization 开销,但没有其他代码是 运行。