Javaでenum
の一部をシリアライズ/デシリアライズしようとするときに問題があります。ここに私の列挙型クラスです:パブリック列挙型をシリアル化/逆シリアル化する簡単な方法は?
FrequencyType.java:
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public enum FrequencyType {
NONE,
HOURLY,
DAILY,
WEEKLY,
MONTHLY;
}
Controller.java
@RequestMapping(method = RequestMethod.POST)
public Object createFrequency(@RequestBody FrequencyType frequencyType) throws Exception {
...
frequencyManager.createFrequency(frequencyType);
...
}
私はFrequencyType
json
として入力に取るようにcreateFrequency
メソッドを使用しようとしています。ここに私の入力の例です。
{
"frequencyType": "HOURLY"
}
私は私のREST APIを介してこのメソッドを呼び出すようにしようとしたときにしかし、私はというエラーを取得:
は「JSONを読み取れませんでした:デシリアライズすることはできません com.zuora.cds.api.schedule.FrequencyTypeがSTART_OBJECTトークンのうち[ソース:[email protected];行:1、列:1]; ネストされた例外は です。com.fasterxml .jackson.databind.JsonMappingException: com.zuora.cds.api.schedulingのインスタンスを逆シリアル化できませんe.Frequencyタイプ/START_OBJECTトークン\ n [ソース: [email protected];行:1、列:1]」、
私もそうようgetters
とsetters
を追加しようとした私は、上記のJsonInclude
とJsonIgnoreProperties
annotationisに追加しようとしたが、それは助けていないようです:。
FrequencyType getNone() {
return FrequencyType.NONE;
}
FrequencyType getHourly() {
return FrequencyType.HOURLY;
}
FrequencyType getDaily() {
return FrequencyType.DAILY;
}
FrequencyType getWeekly() {
return FrequencyType.WEEKLY;
}
FrequencyType getMonthly() {
return FrequencyType.MONTHLY;
}
void setNone(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setHourly(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setDaily(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setWeekly(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setMonthly(FrequencyType frequencyType) {
this.equals(frequencyType);
}
POJO表現がうまくいけばFrequencyType
にJSONを変換するだろうが、私は同じエラーを取得して終わるようにします。任意の助けをいただければ幸いです。ジャクソンに感謝します!
てみ '{ "frequencyType":1}'、それは 'Serialize'は'動作しない場合あなたのライブラリーが何を期待しているかを見てください。 –
@ElliottFrischさんは、 'FrequencyType'を' Serialize'するのが何を意味するか教えてください。最初の方法は機能しませんでした。 – user1871869