2012-08-01 4 views
0

JaxRs 서비스를 사용하여 PHP 응용 프로그램과 RESTFul 통신을하고 있습니다. PHP 대학에서 JSON 형식에 대해 불만을 나타냅니다. 부울 값은 String 또는 true 또는 false로 전달되지 않습니다.Glassfish v3의 Restful 서비스에서 부울 값과 정수 값을 인용하지 않습니다.

{ 
    "cusNO":"13493198", 
    "elmFIRSTNAME":"John", 
    "elmLASTNAME":"Smith", 
    "elmCOMPANYNAME":"Acme", 
    "addrSTREET":"Rock Street", 
    "addrNO":"1", 
    "cityID":"122704", 
    "zipcodeID":"35525", 
    "addrID":"12820372", 
    "default":"true" 
} 

은 web.xml은 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>QISADS</display-name> 
    <servlet> 
    <description>JAX-RS Tools Generated - Do not modify</description> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.feature.DisableXmlSecurity</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <url-pattern>/jaxrs/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

가 어떻게 서비스 특정 데이터 유형에 대한 따옴표를 사용하지를 알 수 있습니까?

JSONConfiguration에서 문자열이 아닌 메소드를 사용할 가능성이 있다는 것을 알았지 만, 엔티티 bean의 각 필드를 명시 적으로 설정해야하는 것처럼 보입니다.

나는 s.t.를 선호합니다. 모든 클래스에서 자동으로 작동합니다. S.t. 여기서 모든 부울, 정수 ...는 문자열이 아니어야 함을 정의 할 수 있습니다.

도움 주셔서 감사합니다.

답변

0

어딘가에 웹에서 해결책을 발견했습니다. 매우 유연하지만, 프로젝트에 새 클래스를 추가 할 때마다이 클래스 내부의 배열에 클래스를 추가하는 방법을 고려해야합니다.

public class MyJsonProvider implements ContextResolver<JAXBContext> { 

private JAXBContext context; 

private Class<?>[] types = { 
     MyFirstClass.class, 
     MySecondClass.class 
}; 

public MyJsonProvider() throws Exception { 

    JSONConfiguration config = JSONConfiguration 
     .natural() 
     .humanReadableFormatting(true) 
     .build(); 
    this.context = new JSONJAXBContext(config, types); 
} 

@Override 
public JAXBContext getContext(Class<?> type) { 
    for (Class<?> c : types) { 
     if (c.equals(type)) 
      return context; 
    } 
    return null; 
} 

}

관련 문제