字符串 Cloud Stream httpclient processor expected-response-type as JSON
String Cloud Stream httpclient processor expected-response-type as JSON
我正在使用 httpclient 处理器作为我的步骤之一,如下所示(在 Shell 语法中指定,因为我在本地测试,此处添加了换行符以提高可读性):
dataflow:>stream create --name test <sourceConfig> |
httpclient --httpclient.urlExpression='''https://host/restUrl'''
--httpclient.body-expression=null
--headers-expression=\"{Accept: 'application/json', <otherHeaders>}\"
| log" --deploy
服务 returns 具有单个条目的映射,以列表作为值。
{ "key" : [ { "name" : "theName", ... }, ... ] }
默认情况下,REST 调用响应主体被解释为字符串。我想指定一个 --httpclient.expected-response-type
选项来将正文解析为 JSON。根据 docs,我需要为此指定一个 java.lang.Class<?>
,而且我不确定要指定什么 class,即使在深入研究文档、单元测试和 POM 之后也是如此。有人知道吗?
或者,我是否需要在 --reply-expression
中手动执行转换?无论哪种方式,我想我仍然需要知道云流正在使用哪个 JSON 库 Spring,除非我遗漏了什么。
看来您在这方面缺少知识。
JSON 是以某种特定格式表示数据的字符串。
将字符串转换为目标 class 已经取决于您的服务了。相同的 JSON 不同的服务可能会解析为不同的域对象。我可以将它转换成 class Foo
,你 - 转换成 Bar
。这就是 expected-response-type
是如何提供无协议的,并让您决定将 JSON 转换成什么。
Jackson 处理器用于转换 to/from JSON。但同样:目标 POJO 是您自己的 class.
虽然您可以将 JSON 字符串转换为 java.util.Map
,但它并不比 JSON 的字符串表示更好。
此外还有一个 processor
,它通过网络将其结果发送到微服务链中的下一步。当您将 JSON 转换为 POJO 时,它将在活页夹的生产者端转换为 JSON 。在这里白白转换有意义吗?
SpEL 也有 JsonPropertyAccessor
,它允许您访问目标 JSON 中的字段,而无需将其转换为 POJO。
因此,请考虑不要担心 JSON 转换,只需从 REST 服务接收它并按原样发送出去 - 以字符串形式表示!
我正在使用 httpclient 处理器作为我的步骤之一,如下所示(在 Shell 语法中指定,因为我在本地测试,此处添加了换行符以提高可读性):
dataflow:>stream create --name test <sourceConfig> |
httpclient --httpclient.urlExpression='''https://host/restUrl'''
--httpclient.body-expression=null
--headers-expression=\"{Accept: 'application/json', <otherHeaders>}\"
| log" --deploy
服务 returns 具有单个条目的映射,以列表作为值。
{ "key" : [ { "name" : "theName", ... }, ... ] }
默认情况下,REST 调用响应主体被解释为字符串。我想指定一个 --httpclient.expected-response-type
选项来将正文解析为 JSON。根据 docs,我需要为此指定一个 java.lang.Class<?>
,而且我不确定要指定什么 class,即使在深入研究文档、单元测试和 POM 之后也是如此。有人知道吗?
或者,我是否需要在 --reply-expression
中手动执行转换?无论哪种方式,我想我仍然需要知道云流正在使用哪个 JSON 库 Spring,除非我遗漏了什么。
看来您在这方面缺少知识。 JSON 是以某种特定格式表示数据的字符串。
将字符串转换为目标 class 已经取决于您的服务了。相同的 JSON 不同的服务可能会解析为不同的域对象。我可以将它转换成 class Foo
,你 - 转换成 Bar
。这就是 expected-response-type
是如何提供无协议的,并让您决定将 JSON 转换成什么。
Jackson 处理器用于转换 to/from JSON。但同样:目标 POJO 是您自己的 class.
虽然您可以将 JSON 字符串转换为 java.util.Map
,但它并不比 JSON 的字符串表示更好。
此外还有一个 processor
,它通过网络将其结果发送到微服务链中的下一步。当您将 JSON 转换为 POJO 时,它将在活页夹的生产者端转换为 JSON 。在这里白白转换有意义吗?
SpEL 也有 JsonPropertyAccessor
,它允许您访问目标 JSON 中的字段,而无需将其转换为 POJO。
因此,请考虑不要担心 JSON 转换,只需从 REST 服务接收它并按原样发送出去 - 以字符串形式表示!