Java 用震动来“震动”;“严格化”;JSON

Java 用震动来“震动”;“严格化”;JSON,java,jolt,Java,Jolt,在这种情况下,修改API响应数据的唯一方法是JOLT。出于各种原因,我需要使用JOLT将响应“字符串化” 使用=concat很容易做到这一点,但它不会生成有效的JSON格式,或者很容易反转的格式 示例输入 {"random":69,"random float":41.842,"bool":false,"date":"1988-01-23","array":["Pear

在这种情况下,修改API响应数据的唯一方法是JOLT。出于各种原因,我需要使用JOLT将响应“字符串化”

使用=concat很容易做到这一点,但它不会生成有效的JSON格式,或者很容易反转的格式

示例输入

{"random":69,"random float":41.842,"bool":false,"date":"1988-01-23","array":["Pearline","Marita","Sonni"],"array of objects":[{"index":0,"index start at 5":5}],"Ernesta":{"age":73}}
颠簸

"{random=69, random float=41.842, bool=false, date=1988-01-23, array=[Pearline, Marita, Sonni], array of objects=[{index=0, index start at 5=5}], Ernesta={age=73}}"
"{\"random\":69,\"random float\":41.842,\"bool\":false,\"date\":\"1988-01-23\",\"array\":[\"Pearline\",\"Marita\",\"Sonni\"],\"array of objects\":[{\"index\":0,\"index start at 5\":5}],\"Ernesta\":{\"age\":73}}"
[
{
“操作”:“移位”,
“规格”:{
"*": {
“@”:“x.&”
}
}
},
{
“操作”:“修改覆盖测试版”,
“规格”:{
*:“=concat(“”,@(0))”
}
},
{
“操作”:“移位”,
“规格”:{
“x”:”
}
}
]
输出

"{random=69, random float=41.842, bool=false, date=1988-01-23, array=[Pearline, Marita, Sonni], array of objects=[{index=0, index start at 5=5}], Ernesta={age=73}}"
"{\"random\":69,\"random float\":41.842,\"bool\":false,\"date\":\"1988-01-23\",\"array\":[\"Pearline\",\"Marita\",\"Sonni\"],\"array of objects\":[{\"index\":0,\"index start at 5\":5}],\"Ernesta\":{\"age\":73}}"
所需输出

"{random=69, random float=41.842, bool=false, date=1988-01-23, array=[Pearline, Marita, Sonni], array of objects=[{index=0, index start at 5=5}], Ernesta={age=73}}"
"{\"random\":69,\"random float\":41.842,\"bool\":false,\"date\":\"1988-01-23\",\"array\":[\"Pearline\",\"Marita\",\"Sonni\"],\"array of objects\":[{\"index\":0,\"index start at 5\":5}],\"Ernesta\":{\"age\":73}}"
我试图检查JOLT java代码,看看是否可以调整concat的行为以不丢失引号,但我找不到任何东西


我曾想过用concat恢复双引号和冒号,但很快我就放弃了。如果有人有更好的技术,请告诉我。理想情况下,震动是广义的,而不是特定于输入的。

对不起!我无法用jolt帮助您实现这一点,但我有以下替代方法

NIFI流量:

在过去面临相同的问题,并按照图中所示进行管理

步骤:

  • 首先获取JSON并使用EvaluateJsonPath处理器将其放入用户定义的文件属性中。 在这里,我将您的整个JSON放入一个名为InputJson的流文件属性中
  • 2.现在,当流文件及其属性进入UpdateAttribute处理器时,使用函数转义我们之前有意分配给InputJson属性的Json,转义后,将其分配给新属性。 egg:如您所见,我已将转义的json分配给一个名为outputjson的新属性

    3.现在查看预期输出,如下所示:

  • 现在摄取outputjson属性,该属性已将json转义为json,如下所示: JoltSpec:
  • [ { “操作”:“默认值”, “规格”:{ "*": { “finalOutput”:“${outputjson}” } } } ]


    注意:上面的jolt规范我只是作为一个示例来展示如何将流文件属性摄取/访问到jolt中。

    能否为您在问题中发布的输入添加预期的输出JSON?@ArunSai-addeden幸运的是,我没有基于NIFI的设置,只有调用jolt库的java后端