REST 서비스를 위해 Jersey를 사용하는 Java 애플리케이션이 있습니다. 몇 가지 REST 엔드 포인트가 있는데 모두 유효한 JSON (원하는 형식)을 리턴합니다. 하나의 요소 인 자바 사각형을 제외하고 유효한 JSON을 반환하는 새로운 종점 인 GET이 있습니다. 다음과 같은 응답입니다.Jersey/JAXB hates Rectangle
[
{
"customers": {
"current": 2,
"max": 16
},
"format": "ABCD",
"dataPoints": 20,
"window": "java.awt.Rectangle[x=50,y=50,width=400,height=300]"
}
]
알다시피,이 사각형은 유효한 JSON이 아닙니다. 나는 여러 가지를 시도했지만 아무도 효과가 없었다. 내가 시도한 것들은 클래스의 Rectangle 요소에 @XmlRootElement
, @XmlElement
및 @XmlAttribute
을 추가하는 것을 포함합니다. 유일한 것은 잘못된 형식의 JSON을 출력 상단으로 이동하는 것입니다.
Rectangle 클래스의 클래스 선언에 @XmlRootElement
이 없기 때문에 JAXB를 올바르게 XML로 변환 할 수없고 JSON으로 변환 할 수 없다고 생각됩니다. 이 경우 해당 주석을 포함하기 위해 Rectangle에서 상속해야합니까? JAXB 개발자가 내장형을 고려한 것처럼 보입니다. 내 가정이 맞습니까? 아니면 다른 해결책이 있습니까?
을
다음이
window
속성은이 같은 XML 표현을해야합니다 'java.awt.Rectangle'을위한'XmlAdapter'를 만들어야합니다. [이 기사] (http://www.eclipse.org/eclipselink/documentation/2.6/moxy/advanced_concepts006.htm#TLJAX424)를 참조하십시오. –[JAXB의 java.awt.Point 및 java.awt.Rectangle]에 관련됨 (https://stackoverflow.com/questions/32070513/java-awt-point-and-java-awt-rectangle-in-jaxb) –
고마워, 토마스 프리츠. 예제를 정확하게 복사했는데 이제는 'window'가 빈 배열로 표시됩니다. 그게 잘못이지만,이 오류를 디버깅하는 방법을 모른다. – Frecklefoot