Dayasha Dayasha - 1 month ago 24
Java Question

Jersey MOXy JSON Case-Insensitive Unmarshalling

I'm trying to setup a REST-service with Jersey 2.x that consumes a JSON-Response by POST using MOXy.

Everything works fine as long as all the JSON-attributes are named exactly like the properties in my POJO. Is there any way to configure MOXy so that it allows case-insensitive unmarshalling? For example: Match JSON-attribute "testid" to "TestID" in my POJO.

The POJO-Field is camel case, but the incoming JSON-Attribute could be in any case and my sevice should be able to process it nonetheless.

Thank you for your help!

Answer

Without defining a custom unmarshaller (or parsing directly from the HttpServletRequest) you can only define the expected key name, as pointed out in the comment of rmlan, with the JAXB annotation @XmlElement(name="testid"). However this will not protect your service from a JSON input with a key like "TestID" or "TESTID".