참고 : 저는 EclipseLink JAXB (MOXy)이며 JAXB 2 (JSR-222) 전문가 그룹의 구성원입니다.
다음은 EclipseLink JAXB (MOXy)에서 JSON 바인딩을 사용하여이 사용 사례를 지원하는 방법입니다.
자바 모델 (루트)
다음은 내가이 예를 들어, 사용하는 자바 모델입니다.
이 JAXB 공급자로 MOXY를 지정하려면이 파일을 포함 할 필요가
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Root {
private List<String> channels = new ArrayList<String>();
@XmlElementWrapper
@XmlElement(name="channel")
public List<String> getChannels() {
return channels;
}
}
JAXB 프로 바이더로 목시를 지정합니다 (jaxb.properties)는 다음과 도메인 모델과 동일한 패키지에 jaxb.properties
라고 항목 (참조 :) :
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
데모 코드
,536,
아래의 데모 코드에서 우리는 XML과 JSON 모두에 동일한 인스턴스를 출력 할 것입니다.다음은 출력
import javax.xml.bind.*;
import org.eclipse.persistence.jaxb.MarshallerProperties;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
Root root = new Root();
root.getChannels().add("Test A");
root.getChannels().add("Test B");
// Output XML
marshaller.marshal(root, System.out);
// Output JSON
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);
marshaller.setProperty(MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME, true);
marshaller.marshal(root, System.out);
}
}
데모 코드 실행의 출력을 것입니다 자세한 내용
<?xml version="1.0" encoding="UTF-8"?>
<root>
<channels>
<channel>Test A</channel>
<channel>Test B</channel>
</channels>
</root>
{
"channels" : [ "Test A", "Test B" ]
}
을
"채널": [ "테스트 A", "테스트 B"]'아니겠습니까? –