Github user anandsubbu commented on a diff in the pull request: https://github.com/apache/metron/pull/727#discussion_r138362883 --- Diff: metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/StringFunctions.java --- @@ -550,4 +548,90 @@ else if(var.length() == 0) { return new ParseException("Unable to parse JSON string"); } } + + @Stellar(name = "JSON_TO_MAP" + , description = "Returns a MAP object for the specified JSON string" + , params = { + "str - the JSON String to convert, may be null" + } + , returns = "a MAP object containing the parsed JSON string" + ) + public static class JsonToMap extends BaseStellarFunction { + + @Override + public Object apply(List<Object> strings) { + + if (strings == null || strings.size() == 0) { + throw new IllegalArgumentException("[JSON_TO_MAP] incorrect arguments. Usage: JSON_TO_MAP <JSON String>"); + } + String var = (strings.get(0) == null) ? null : (String) strings.get(0); + if (var == null) { + return null; + } else if (var.length() == 0) { + return var; + } else { + ObjectMapper objectMapper = new ObjectMapper(); + + // First parse and check if input is valid JSON string + try { + objectMapper.readTree((String) strings.get(0)); + } catch (JsonProcessingException ex) { + throw new ParseException("Valid JSON string not supplied", ex); + } catch (IOException e) { + e.printStackTrace(); + } + + // Return parsed JSON Object as a HashMap + try { --- End diff -- Sure, done!
---