2016-07-14 2 views
0

I 클래스는 다음과 같이 찾고 있습니다 : 예상대로이 작동비 정렬 화 된 JSON @POST 매개 변수

@Path("/Test") 
public class Endpoint { 

    @POST 
    @Consumes("application/json") 
    @Produces("application/json") 
    @HeaderParam("Accept") @DefaultValue("application/json") 
    public Response createTest(String json) { 
     return Response.status(Response.Status.ACCEPTED).entity(json).build(); 
    } 
} 

:

public class Test { 

    @JsonProperty("name") 
    private String name; 

    public Test(){} 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

또한 javax.ws.rs를 사용하여 엔드 포인트 클래스가있다.

질문 : createTest()는 "String"대신 매개 변수로 "Test"클래스를 만들 수 있습니까?

시험 :) createTest (에 있었던 파라미터로 "테스트"를 사용하는 경우 다음과 같은 전송는 "415 지원되지 않는 미디어 유형"을 제공합니다

POST ../Endpoint/ HTTP/1.1 
Host: localhost:8080 
Accept: application/json 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: 56d06798-2b32-57fc-c22a-0240aceb8f98 

{ 
    "name": "Kalle" 
} 
+0

재미 .. – z21

+0

Objectmapper는 "자동으로하지만, 훨씬 더 좋은 일이 "언 마샬. '@FormParam ("test") String json' 결과 값이 없습니다 (null). '@FormParam ("test") 테스트 테스트 결과는 서버 시작시 _com.sun.jersey.spi.inject.Errors.processErrorMessages_가됩니다 ... – Grains

답변

0

난 당신이 저지 2.XX 버전을 사용하는 것 같아요.

public class LoginRequest { 

private String userName; 
private String password; 

public LoginRequest(){ 
    super(); 
} 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

} 

를 A 콩과 자원 (간다 당신의 콩 시험)

@POST 
@Path("login") 
@Consumes(MediaType.APPLICATION_JSON) 
public Response login(LoginRequest request) { 
.... 
} 

과 dependecies :

<properties> 
    <jersey.version>2.22.1</jersey.version> 
    <jackson.version>2.6.1</jackson.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<version>1</version> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-json-jackson</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-common</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

</dependencies> 

이유 415 지원되지 않는 미디어 유형 문제는 때문에 돈이다 올바른 의존성을 가지고 있지 않습니다.

은 ... 당신은 클래스로 인수를 기대하는 @ FormParam``사용할 수 있습니다 또는 당신이 당신의 클래스로 JSON을 구문 분석 객체 매퍼를 사용할 수 있습니다