我看到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]}
模板渲染
NiFi - 不起作用;正确的打印输出但是渲染不正确
答案 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 -> AttributesToJSON
或ExecuteStript
语言使用javascript
- 两者都有良好的语法来构建json。