使用NiFi与curl发布JSON时出错

时间:2017-07-21 14:53:31

标签: json curl apache-nifi

我看到NiFi的 InvokeHTTP 处理器发布json数据与 curl 之间的差异非常小。

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

有谁知道可能出现什么问题?谢谢!

CURL - 有效;正确的打印输出&呈现

curl -X POST -H "Content-Type: application/json" -d '{ "responseID": "a1b2c3", "responseData": { "signals": [ "a", "b", "c" ] } } localhost:8998/userInput

WebServer应用打印输出

responseID:a1b2c3

responseData:{signals=[a, b, c]}

模板渲染

Template render / output for CURL

NiFi - 不起作用;正确的打印输出但是渲染不正确

  1. 生成FlowFile
  2. UpdateAttributes UpdateAttributes Configuration

  3. AttributesToJSON

  4. InvokeHTTP
  5. WebServer应用打印输出

    responseID:a1b2c3

    responseData:{signals=[a, b, c]}

    模板渲染 Template render / output for NiFi

1 个答案:

答案 0 :(得分:2)

你需要这种json:

$dog2 = ['bark'=>function($foo = '{'){}];

但是你在nifi中构建了这个:

{ "responseID": "a1b2c3", "responseData": { "signals": [ "a", "b", "c" ] } }

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

在nifi中,AttributesToJSON处理器只创建一个级别对象,因此您可以创建一个"{ signals=[ a, b, c ] }"序列来创建嵌套的json对象。

或使用AttributesToJSON -> EvaluateJsonPath -> AttributesToJSONExecuteStript语言使用javascript - 两者都有良好的语法来构建json。