Reputation: 1256
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 ?
Upvotes: 4
Views: 18101
Reputation: 3034
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."));
Upvotes: 5
Reputation: 17
The response type should be "text/plain" (produces = "MediaType.TEXT_PLAIN")
Upvotes: -1
Reputation: 3101
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.
Upvotes: 1
Reputation: 1287
It is hard to say without seeing more code and the actual Swagger JSON, but it seems like the JSON has a syntax issue. Run it through a JSON validator to confirm. There are plenty of websites for this if you Google it.
Upvotes: 0