Github user ottobackwards commented on a diff in the pull request:

    https://github.com/apache/metron/pull/727#discussion_r138315063
  
    --- 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();
    +
    --- End diff --
    
    I have a question here.  If you just do the load, and the string is 
invalid, would you not get the same exception?  What is the difference.  If the 
string is always valid, and that is the most common case, then we are always 
doing 2* the processing.  That doesn't seem right in a high volume stream system


---

Reply via email to