首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在set有效负载中给定的json对象与在具有输出application/json的set有效负载中给定的json数据之间的区别是什么?

在set有效负载中给定的json对象与在具有输出application/json的set有效负载中给定的json数据之间的区别是什么?
EN

Stack Overflow用户
提问于 2021-09-30 05:02:40
回答 1查看 135关注 0票数 0

情况1)我将键值对中的对象直接交给设置的有效载荷,然后将其交给我有一个记录器的foreach,它只需打印有效载荷。

内集payload=>

代码语言:javascript
运行
复制
{
    "msg": {
               "status": "ok"
           },
    "msg": {
               "status": "ok2"
    }
}

例2)我将键值对中的对象直接给出输出am /json的设置有效载荷,然后将其交给我有一个记录器的foreach,该记录器只需打印有效负载。

内集有效载荷=>

代码语言:javascript
运行
复制
output application/json
---
{
    "msg": {
               "status": "ok"
           },
    "msg": {
               "status": "ok2"
    }
}

现在,当我运行第一种情况时,我得到了一个错误--每种情况下都成功地运行了第二种情况。在这两种情况下,foreach配置是相同的。

我得到的错误是=>

代码语言:javascript
运行
复制
Foreach does not support 'java.util.Map' with no collection expression. To iterate over Map 
entries use '#[dw::core::Objects::entrySet(payload)]'

所以我有三个问题:

(

  • Q1)当我们给出没有“输出应用程序/json”的对象时,set有效负载组件的默认输出是什么?
  • Q2)以上两种情况之间的区别是什么?
  • Q3(
  • Q3)?每个都可以与对象一起工作?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 12:42:51

(

  • Q1)当我们给出没有"output application/json“的对象时,set有效负载组件的默认输出是什么?

没有默认情况。在Mule 4中,表达式语言是DataWeave 2.x。如果输出格式丢失,DataWeave将尝试从脚本中推断它。它可能并不总是成功的,您需要显式地添加它。

  • Q2)以上2例之间有什么区别?

注意,您的第一个案例不是JSON。它看起来像JSON,但是它是一个DataWeave脚本,没有显式的输出格式。DataWeave正在生成一个Java作为输出来表示一个DataWeave对象,即键值的集合。

第二个是DataWeave,但是执行DataWeave脚本生成的输出显式地是一个JSON对象,媒体类型也设置为application/json,因此流中的消息处理器知道应该如何解析它。

  • Q3)可以-每个都可以处理对象??

取决于特定的实现类,它可能会工作,但通常假设不是。在这种情况下,第一个是不可迭代的Map。如果您想这样做,错误消息告诉您要在Map中的条目上迭代表达式。我不太清楚为什么要用foreach迭代JSON对象。它可能是JSON解析器实现的一个特性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69386407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档