Probably should read this whole topic to get a feel for what it can do:
Either. Given your format, I'd recommend a dataset, with dedicated columns for the possible datatypes. (Similar to IA's historian tables.)
Probably something like this in an expression tag (event triggered):
transform(
jsonDecode({path/to/source/jsonAsString}),
transform(
doDate(value()['eventTime'],
unionAll(
asMap(
'machineId', 'str',
't_stamp', 'date',
'varName', 'str',
'varUnit', 'str',
'boolValue', 'B',
'longValue', 'L',
'doubleValue', 'D'
),
forEach(
value(1)['data'],
value(1)['machineId'], // All rows get this ID
value(), // All rows get the parsed event time
it()['name'],
it()['measurementUnit'],
if(
it()['dataType'] = 'boolean',
toBoolean(it()['value']),
null
),
if(
it()['dataType'] = 'int' || it()['dataType'] = 'long',
toLong(it()['value']),
null
),
if(
it()['dataType'] = 'float' || it()['dataType'] = 'double',
toDouble(it()['value']),
null
)
)
)
)
)