anchor.diff:  prepare_body(Body) ->
       case Body of
           <<"">> -> <<"">>;
  -        _ -> jsx:decode(Body, [return_maps])
  +        _ ->
  +            try
  +                jsx:decode(Body, [return_maps]) 
  +            catch
  +              error:_ ->
  +                {error, {invalid_body, not_json, Body}}
  +            end
       end.
   
   validate_with_schema(Body, Definition, ValidatorState) ->
  
positive.code: 
  populate_request_param(OperationID, Name, Req0, ValidatorState) ->
      #{rules := Rules, source := Source} = request_param_info(OperationID, Name),
      {Value, Req} = get_value(Source, Name, Req0),
      case prepare_param(Rules, Name, Value, ValidatorState) of
          {ok, Result} -> {ok, Name, Result, Req};
          {error, Reason} ->
              {error, Reason, Req}
      end.
  
  -spec validate_response(
  
negative.code:     throw({wrong_param, Name, ViolatedRule, Info}).
  
  -spec get_value(body | qs_val | header | binding, Name :: any(), Req0 :: cowboy_req:req()) ->
      {Value :: any(), Req :: cowboy_req:req()} | 
      {error, Reason :: any(), Req :: cowboy_req:req()}.
  get_value(body, _Name, Req0) ->
      {ok, Body, Req} = cowboy_req:body(Req0),
      case prepare_body(Body) of
          {error, Reason} ->
              {error, Reason, Req};
          Value ->
              {Value, Req}
      end;
  
  get_value(qs_val, Name, Req0) ->
      {QS, Req} = cowboy_req:qs_vals(Req0),
  