使用NiFi vs.curl发布JSON时出错

使用NiFi vs.curl发布JSON时出错,json,curl,apache-nifi,Json,Curl,Apache Nifi,我看到NiFi的InvokeHTTP处理器发布json数据的方式和curl发布json数据的方式之间有着非常细微的区别 问题是,当我记录数据时,数据似乎是相同的。。。但数据呈现方式不同 有人知道会出什么问题吗?谢谢大家! CURL——有效;正确的打印输出和渲染 curl-X POST-H“内容类型:application/json”-d'{“responseID”:“a1b2c3”,“responseData”:{“signals”:[“a”,“b”,“c”]}本地主机:8998/userInp

我看到NiFi的InvokeHTTP处理器发布json数据的方式和curl发布json数据的方式之间有着非常细微的区别

问题是,当我记录数据时,数据似乎是相同的。。。但数据呈现方式不同

有人知道会出什么问题吗?谢谢大家!

CURL——有效;正确的打印输出和渲染

curl-X POST-H“内容类型:application/json”-d'{“responseID”:“a1b2c3”,“responseData”:{“signals”:[“a”,“b”,“c”]}本地主机:8998/userInput

Web服务器应用程序打印输出

响应ID:
a1b2c3

响应数据:
{signals=[a,b,c]}

模板渲染

NiFi——不工作;打印输出正确,但渲染不正确

  • 生成流文件
  • 更新属性

  • AttributesToJSON

  • 调用EHTTP
  • Web服务器应用程序打印输出

    响应ID:
    a1b2c3

    响应数据:
    {signals=[a,b,c]}

    模板渲染

    您需要这种json:

    {“responseID”:“a1b2c3”,“responseData”:{“信号”:[“a”、“b”、“c”]}
    
    但在nifi中,您构建了这个:

    {“responseID”:“a1b2c3”,“responseData”:“{signals=[a,b,c]}”
    
    这意味着创建
    responseData
    就像创建字符串
    “{signals=[a,b,c]}”
    一样,但需要一个对象

    在nifi中,AttributesToJSON处理器只创建一个级别对象,因此您可以创建一系列
    AttributesToJSON->EvaluateJsonPath->AttributesToJSON
    来创建嵌套的json对象


    或者将
    ExecuteStript
    javascript
    groovy
    语言一起使用-两者都有很好的语法来构建json。

    我将尝试一下。我一直在构建类似NiFi JSON的
    {“signals”:[“a”、“b”、“c”]}
    ,但它将其解释为字符串。。。我读到了一些关于JoltTransferMJSON处理器的东西。。。NiFi有没有办法以编程方式处理动态、多级JSON?它是
    ExecuteScript
    处理器。检查例如:Jolt-有一些限制检查是否可以接受: