xstream 맞춤형 Converter 최적화
사용자 정의 Converter 수정 선호
public class OrgIDConverter implements Converter {
//
private String nodeName;
//
public OrgIDConverter(String nodeName) {
super();
this.nodeName = nodeName;
}
@SuppressWarnings("unchecked")
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext arg2) {
// Object , canConvert , instanceOf
List<String> list = (List<String>) value;
for (String subval : list) {
// , List converter
writer.startNode(nodeName);
writer.setValue(subval);
writer.endNode();
}
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
// List , xml orgID
List<String> list = new ArrayList<String>();
while (reader.hasMoreChildren()) {
reader.moveDown();
String key = reader.getNodeName();
String value = null;
// , else ,if orgID ,
if (reader.hasMoreChildren()) {
value = (String)unmarshal(reader, context);
} else {
value = reader.getValue();
}
list.add(value);
reader.moveUp();
}
return list;
}
public boolean canConvert(Class type) {
// class , : (List )
return type.equals(ArrayList.class);
}
}
등록 방법을 수정하여 엔티티 클래스에 등록하려면 다음과 같이 하십시오.
public class InfoTest {
public static void main(String[] args) {
XStream stream = new XStream();
stream.alias("info", Info.class);
// Converter
stream.registerLocalConverter(Info.class, "orgIDs", new OrgIDConverter("orgID"));
stream.registerLocalConverter(Info.class, "roleIDs", new OrgIDConverter("roleID"));
// stream.alias("orgID", String.class);
// stream.alias("roleID", String.class); ///:xstream String , String
Info info = new Info();
List<String> orgIDs = new ArrayList<String>();
orgIDs.add("020120214");
orgIDs.add("020120215");
info.setOrgIDs(orgIDs);
List<String> roleIDs = new ArrayList<String>();
roleIDs.add("020120216");
roleIDs.add("020120217");
info.setRoleIDs(roleIDs);
System.out.println(stream.toXML(info));
}
}
이전 기사 링크: http://winnie825.iteye.com/admin/blogs/1432064
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.