code: func ParseFilterString(ctx context.Context, rawSearchString string) (criteria.Expression, *QueryOptions, error) {
  	fm := map[string]interface{}{}
  	// Parsing/Unmarshalling JSON encoding/json
  	err := json.Unmarshal([]byte(rawSearchString), &fm)
  
  	if err != nil {
  		log.Error(ctx, map[string]interface{}{
  			"err":             err,
  			"rawSearchString": rawSearchString,
  		}, "failed to unmarshal raw search string")
  		return nil, nil, errors.NewBadParameterError("expression", rawSearchString+": "+err.Error())
  	}
  	q := Query{}
  	parseMap(fm, &q)
  
  	q.Options = parseOptions(fm)
  
  	exp, err := q.generateExpression()
  	return exp, q.Options, err
  }
docs: // ParseFilterString accepts a raw string and generates a criteria expression