다음 json을 만들어야합니다.
[ { "contentType": "folder" },
{ "contentType": "image" },
{ "contentType": "video" }
]
이러한 배열에서 구문 분석 :
FileStructureElement [] elements[];
갖는 :
public class FileStructureElement {
private ElementType contentType;
}
public enum ElementType {
FOLDER, IMAGE, VIDEO, DEFAULT;
}
이것은 간단한 예이며, FileStructureElement
클래스에는 질문 필드와 관련이없는 더 많은 속성이 있습니다.
contentType
속성 값을의 값으로로드하고 싶습니다 ElementType
. json에서 가능한 값 중 하나가 유효한 enum 값이 아닌 "default"이기 때문에 enum의 값을 json의 유형과 일치시킬 여유가 없습니다. 또한 소문자 이름을 가진 열거 형 값을 갖고 싶지 않습니다. 이것은 기본적으로 GSON 구문 분석을 사용자 정의해야 함을 의미합니다. 누군가 나를 도울 수 있습니까?
여기 에서 나온 아이디어 (내가 구문 분석 한 속성의 값을 확인하고 열거 형 값을로드할지 여부를 선택)는 내가 말하는 웹 서비스 인터페이스를 제어 할 수없고 값이 너무 분명하고 다른 json 속성의 값으로도 존재할 위험이 있습니다.
열거 형에 대한 사용자 정의 구문 분석을 원하는 경우 어댑터를 등록해야합니다.
JsonDeserializer<?> jd = new JsonDeserializer<ElementType>() {
@Override
public ElementType deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
String enumStr = json.getAsString();
ElementType val =
//...
return val;
}
};
Gson gson = new GsonBuilder().registerTypeAdapter(ElementType.class, jd).create();
제공된 문자열에 대해 올바른 열거 형 값을 반환하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다