В Mulesoft Dataweave 2.0 есть способ проверить, является ли входная строка форматом XML или JSON?

У меня есть строковый ввод в мой API. Это может быть XML или JSON, и мне нужно использовать на нем функцию чтения, чтобы преобразовать его в JSON. Как лучше всего в MuleSoft 4 или Dataweave 2 определить, в каком формате находится строка?

Возможно, я мог бы написать функцию isXML (String inputString) или isJSON (String inputString).

На данный момент у меня есть что-то неэлегантное. Я пытаюсь проанализировать ввод как XML и перехватить любые исключения синтаксического анализа. Внутри ловушки попробую разобрать как JSON. Думаю, это не ужасное решение.


person Dale    schedule 22.10.2019    source источник


Ответы (1)


Попробуй это:

%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")
person George    schedule 22.10.2019
comment
Именно то, что я хотел. Спасибо. - person Dale; 22.10.2019