I am not sure why this is happening. My return statement for spring boot
rest controller is something like below
return ResponseEntity.status(HttpStatus.OK).body("Successfully added");
Now on swagger UI
i see response as below
can't parse JSON. Raw result:
Successfully added
why is this happening ?
This is happening because you are returning a string literal instead of a JSON object. I presume your return type would have been ResponseEntity<String>
but this would not work and you would need to specify an object in the body. You can create a POJO that will hold the message for you, something like this:
public class YourResponseClass {
private String message;
//Constructors, getter and setter
}
Then while returning you need to change the return type to ResponseEntity<YourResponseClass>
and then return your response:
return ResponseEntity.ok(new YourResponseClass("Successfully Added."));
Late to the game but will share my solution to this issue, as it surfaced for me in a Python Flask-based REST backend I was developing recently. You could have NaN values in your JSON, if your issue was similar to mine, albeit in Python.
I too was getting "can't parse JSON" on the swagger side. Turns out that Python's standard library json
import will allow "modern" but not-officially-JSON types, such as "NaN". And doing some calculations with floats and voila...As a strict parser fails with a type such as NaN, it's worth checking that you don't have these in your request JSON response.
Though not a Java-specific answer, maybe my Python solution can help you solve the issue.
json.dumps(yourdata, cls=NumpyEncoder)
Where NumpyEncoder
is some class that converts NaN
values to JSON and/or your acceptable specifications. It might be the case that you too can include some encoder class in your code to remove NaN and/or other artifacts.
See my so answer for Python implementation details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With