当前位置: 首页 > 知识库问答 >
问题:

Mule 4 DataWeave上的编译时间错误

端木存
2023-03-14

我是Mulesoft Dataweave语言的新手,我不明白我在code-1和code-2语法中犯了什么错误。它在if块上显示一个编译时错误。你能建议我在下面的脚本中犯了什么错误吗?

%dw 2.0
fun createUserData(name) = { 
    if(name=="USA"){
        readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    }else{
        readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    }
}
output application/json
---
createUserData("USA")
output application/json
---
    if(payload != null){
            readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    }else{
            readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    }

共有2个答案

庄星汉
2023-03-14

你可以尝试用这样的方法

%dw 2.0
output application/json
fun createUserData(name) = { 
    a: if(name=="USA")
        readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    else
        readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
  
}
---
createUserData("USA").a

另一个示例脚本:

%dw 2.0
output application/json
var a  =  "1"
---
if (a == "1") ["a","b"] ++ ["c","d"] ++ [{"abc": "hello"}]
else if ( a == "2" or a == "3") {
      v: " this is ok"
}
else {
    v: "this is just ok"
}

另一个例子:

%dw 2.0
import * from dw::util::Values
output application/json
var a  =  "1"
var b = {"hello" : "world"}
---
if (a == "1") ["a","b"] ++ ["c","d"] ++ [{"abc": "hello"}] + (b update "hello" with "hello")
else if ( a == "2" or a == "3") {
      v: " this is ok"
}
else {
    v: "this is just ok"
}
仉英朗
2023-03-14

您的问题不在于条件,而在于它返回的对象的语法。在 DataWeave 中,大括号不是 if/else 条件的一部分。大括号分隔一个对象,其中包含键值对。表达式启动一个对象,但缺少键。假设 readUrl() 返回一个对象 { a: 1 },它将等效于:

{ { a: 1} }

这是无效的,因为外部对象没有键,只有一个值。在这种情况下,你可以只返回不带大括号的readUrl()的结果:

 if(payload != null)
            readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    else
            readUrl("https://jsonplaceholder.typicode.com/posts/1", "application/json")
    

因为if/else的每一个分支里面都有更多的表达式,所以你也可以转换它们。

有关更多示例,请参见@Salim Khan的答案。

 类似资料:
  • 从事maven项目。我试图使用maven进行构建,但我遇到了以下错误!我正在使用JDK 8开发eclipse。 无法执行目标org.apache.maven.plugins:maven-compiler-plugin:2.3.2:编译(默认编译) 我也尝试了上面的解决方案,但我仍然得到错误!

  • 我试图从spark 1.6迁移到2.0,但仅在2.0上编译时出现以下错误: 无法找到存储在数据集中的类型的编码器。导入支持原始类型(Int、String等)和产品类型(case类)spark.implicits._将在未来版本中添加对序列化其他类型的支持。val subGroupCount: Array[Seq[any]]=columns.map(c= 问候

  • 我正在使用2.4.0-ALPHA01房间

  • 我正试图减少gwt项目的编译时间,使用maven概要文件来设置是需要所有排列还是只需要其中的一部分。 我按照教程在这里:http://www.bonitasoft.org/blog/tutorial/speed-up-gwt-i18n-compilation-using-maven-profiles/ 但是,它没有说明如何创建这两个模块(生产和开发)。这些都是应用程序。gwt。xml文件,如果是,

  • 我正在制作应用程序,以广播电话视频到youtube频道。我找到了这个链接https://github.com/youtube/yt-watchme。 在编译我的代码时,我得到了错误 在文件avecode.h代码#include“libavutil/samplefmt.h”中找不到libavutil 错误:失败:生成失败,出现异常。*错误: 执行任务“:app:ExternalNativeBuild

  • 我试图安装nodetime模块(用于node),但是当我安装时,我得到了以下编译错误: make:***[release/obj.target/nodetime_native/src/nodetime_native.o]错误1 make:离开目录make`失败,退出代码:2 gyp错误!在childprocess.onexit上堆栈(/home/fernando/apps/node-v0.12.2