dataweave - 在 Mulesoft Dataweave 2.0 中,有没有办法测试输入字符串是 XML 还是 JSON 格式?

标签 dataweave mulesoft

我的 API 有一个字符串输入。它可以是 XML 或 JSON,我需要使用它的 Read 函数将其解析为 JSON。 MuleSoft 4 或 Dataweave 2 中确定字符串格式的最佳方法是什么?

也许我可以编写一个函数 isXML(String inputString) 或 isJSON(String inputString)。

到目前为止,我有一些不优雅的东西。我正在尝试将输入解析为 XML 并捕获任何解析异常。在 catch 中,我将尝试将其解析为 JSON。我想这不是一个可怕的解决方案。

最佳答案

试试这个:

%dw 2.0
output application/dw
var xml = "<test>XML</test>"
var json = '{"test":1, "test2": 2}'
var test = xml
---
// Try to read it as a JSON
dw::Runtime::try(() -> read(test,"application/json")) 
// Now try to read it as an XML
dw::Runtime::orElseTry(() -> read(test,"application/xml"))
// You have data that are neither of XML or JSON
dw::Runtime::orElse("Not XML or JSON")

关于dataweave - 在 Mulesoft Dataweave 2.0 中,有没有办法测试输入字符串是 XML 还是 JSON 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58508146/

相关文章:

dataweave - 如何使用 Dataweave 2.0 比较和合并两个 JSON 对象

powershell - 如何在PowerShell中比较JSON

Dataweave 2.0 withMaxSize 函数

mule - 如何忽略 DataWeave Mule esb 中的空对象

dataweave - 仅在 DataWeave 2.0/Mule 4 中映射值

json - 使用 Dataweave 2.0 将 JSON 对象展开为嵌套的 JSON 对象

java - 如何从 Mule 4 中的文件中读取 JSON 字符串

mule - 如何在foreach中添加多个http请求调用|骡子3

dataweave - JSON 对象忽略 null

dataweave - 使用 Dataweave 将键和值数组压缩到一个对象中