gson 2.2.4에서 이와 같이 간단한 열거 형을 직렬화 및 비 직렬화 할 수 있습니까?Gson으로 열거 형을 직렬화 및 비 직렬화
public enum Color {
RED, BLUE, YELLOW;
}
gson 2.2.4에서 이와 같이 간단한 열거 형을 직렬화 및 비 직렬화 할 수 있습니까?Gson으로 열거 형을 직렬화 및 비 직렬화
public enum Color {
RED, BLUE, YELLOW;
}
는 Gson API documentation에 따르면, GSON 그래서 기본적으로 직렬화 및 다른 유형으로, 표준 toJson
및 fromJson
방법을 사용하여 직렬화해야 Enum
의 디폴트의 직렬화/역 직렬화를 제공합니다.
시도해 볼 수 있습니다.
import com.google.gson.annotations.SerializedName;
public enum Color {
@SerializedName("0")
RED (0),
@SerializedName("1")
BLUE (1),
@SerializedName("2")
YELLOW (2);
private final int value;
public int getValue() {
return value;
}
private Color(int value) {
this.value = value;
}
}
참고 : 이전 버전의 GSON에서는 작동하지 않습니다. 버전 2.1 이상에서 작동합니다. –
그는 2.2.4 버전을 요구했습니다. 그렇습니다. –
이것은 정말 좋은 접근 방법입니다. 자주 사용하며 GSON의 최신 버전에서는 사용자가 간결하고 복잡한 사용자 지정 serialization/deserialization 코드가 필요 없기 때문에 사용자가이 접근 방식을 사용해야한다고 생각합니다. – jwir3
하지만 GSON의 버전에서이 괜찮뿐만 아니라, 모르는 작품 : 기본적으로
public enum OrderLineTimeRegistrationStatus {
None(0), Started(1), Paused(2);
private int value;
private OrderLineTimeRegistrationStatus(int value)
{
this.value=value;
}
public int getValue()
{
return(value);
}
}
죄송합니다. 작동하지 않습니다. Gson 2.8.0 사용. 어쨌든 어떻게 작동할까요? Gson은 현명하지만 그렇게 똑똑하지는 않습니다. – waste
이 GSON가 직렬화 및 열거 대신 서수 값의 이름을 사용하여 직렬화 복원합니다. 하나의 serializer와 deserializer를 설정하여 모든 Enum을 순서 값으로 처리 할 수 있습니까? – Churro
enum에 주석'@ SerializedName'을 추가 할 수 있습니다. – ViliusK
@ViliusK : 열거 형을 String.valueOf (서수)로 serialize하는 열거 형을 만들 것입니다. 직렬화 된 열거 형을 int로 만들 수있는 유사한 주석 또는 방법이 있습니까? 예 : "color": 1은 "color"가 아니라 "1"입니다. (이중 인용문을 염두에두고 약 1) – Behnam