Error parsing JSON param in java REST

后端 未结 2 1963
暖寄归人
暖寄归人 2020-12-04 03:51

I have recently upgraded my REST API to use jersey 2.x and now I am unable to retrieve JSON body params the way I used to, the methods simply do not get called anymore. My g

2条回答
  •  广开言路
    2020-12-04 04:35

    You need a JSON provider

    At time of writing, Jersey 2.x integrates with the following modules to provide JSON support:

    • MOXy
    • Java API for JSON Processing (JSON-P)
    • Jackson
    • Jettison

    Using Jackson

    See below the steps required to use Jackson as a JSON provider for Jersey 2.x:

    Adding Jackson module dependencies

    To use Jackson 2.x as your JSON provider you need to add jersey-media-json-jackson module to your pom.xml file:

    
        org.glassfish.jersey.media
        jersey-media-json-jackson
        2.25.1
    
    

    To use Jackson 1.x it'll look like:

    
        org.glassfish.jersey.media
        jersey-media-json-jackson1
        2.25.1
    
    

    Registering Jackson module

    Besides adding the dependency mentioned above, you need to register JacksonFeature (or Jackson1Feature for Jackson 1.x) in your Application / ResourceConfig subclass:

    @ApplicationPath("/api")
    public class MyApplication extends Application {
    
        @Override
        public Set> getClasses() {
            Set> classes = new HashSet>();
            classes.add(JacksonFeature.class);
            return classes;
        }
    }
    
    @ApplicationPath("/api")
    public class MyApplication extends ResourceConfig {
    
        public MyApplication() {
            register(JacksonFeature.class);
        }
    }
    

    If you don't have an Application / ResourceConfig subclass, you can register the JacksonFeature in your web.xml deployment descriptor. The specific resource, provider and feature fully-qualified class names can be provided in a comma-separated value of jersey.config.server.provider.classnames initialization parameter.

    
        jersey.config.server.provider.classnames
        org.glassfish.jersey.jackson.JacksonFeature
    
    

    The MessageBodyWriter provided by Jackson is JacksonJsonProvider.


    For more details, check the Jersey documentation about support for common media type representations.

提交回复
热议问题