如何返回从Java REST API JSON对象(how to return json objec

2019-10-21 06:24发布

我试图返回从JAX-RS JSON对象,但我得到一个内部服务器错误,每当我尝试接入。

这是我的方法,我使用javax.ws.rs.GET

@GET
@Produces("application/json")
public Testy getJson() {
   return new Testy("hello");
}

这是类:

public class Testy {

    private final String value;

    public Testy(String value){

        this.value = value;
    }

  public String getValue(){

      return value;
   }

}

我的pom.xml有这种依赖关系,我曾尝试过各种依赖关系,但没有工作。 有各种行家资源的球衣,还有球衣,球衣的客户端核心。

<dependency>
 <groupId>com.fasterxml.jackson.jaxrs</groupId>
 <artifactId>jackson-jaxrs-json-provider</artifactId>
 <version>2.3.3</version>
</dependency>

我使用Glassfish的4。

关于与新泽西州工作的问题:

我已经看到了一些地方 ,他们提到你需要有初始化POJO的支持,好像它球衣1 *,但我不知道。 如果我使用2 *我并不需要这个?

我必须修改web.xml以指向球衣的servlet?

我怎样才能生产和消费使用POJO类JSON对象!?

编辑

这里是我的自动生成的配置类。

Answer 1:

我不得不把JacksonFeature资源添加到我的ApplicationConfig类。

    @javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();              
       addRestResourceClasses(resources);
       resources.add(org.glassfish.jersey.jackson.JacksonFeature.class);
        return resources;
    }

    /**
     * Do not modify addRestResourceClasses() method.
     * It is automatically populated with
     * all resources defined in the project.
     * If required, comment out calling this method in getClasses().
     */
    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(com.wfscorp.restapitwo.GenericResource.class);
    }

}

然后一切正常!

注意

当我用com.fasterxml.jackson.jaxrs依赖我无法部署应用。 我开始一个WELD-001408 Unsatisfied dependencies for type的错误,所以我不得不排除球衣媒体多部分。

这些都是在我的pom.xml依赖

 <dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.13</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency> 

    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.4.0</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.7</version>
        <scope>provided</scope>
    </dependency>

</dependencies>


Answer 2:

这将在整个过程中的参考指南,简易- http://examples.javacodegeeks.com/enterprise-java/rest/jersey/json-example-with-jersey-jackson/



Answer 3:

这可能是你需要吸气剂暴露你的暴躁对象的价值属性。



文章来源: how to return json objects from java rest api