首页 > 解决方案 > 在 Mulesoft Dataweave 2.0 中有没有一种方法可以测试输入字符串是 XML 还是 JSON 格式?

问题描述

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

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

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

标签: dataweavemulesoft

解决方案


尝试这个:

%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")

推荐阅读