@ResponseBody を持つ JSON を返す Spring コントローラー クラスがあります。しかし、奇妙なことに、double フィールドに対して整数を返します。JSON ライブラリとして JacksonMapper を使用しています。ここにクラスがあります。
Phone
public class Phone implements Serializable {
@JsonProperty(value="phoneid")
private long phoneId;
private Plan plan;
private String sim;
private String imei;
@JsonProperty(value="phonetype")
private String phoneType;
@JsonProperty(value="phonenumber")
private String phoneNumber;
private String label;
@JsonProperty(value="connecteddate")
private String connectedDate;
//getters and setters
}
Plan
public class Plan implements Serializable {
@JsonProperty(value="planid")
private long planId;
@JsonProperty(value="planname")
private String planName;
private double billingIncrement;
private double owiStdUnitCost;
private double owiFlagFall;
private double stdCap;
private double dataCap;
private double smsCap;
private double owiDataUnitCost;
private double owiSms;
//getters and setters
}
PhoneResult
public class PhoneResult implements Serializable {
private boolean ok;
private String message;
private Phone result;
//getters and setters
}
PhoneResult オブジェクトを返すと、次のように返されます。
{
"ok": true,
"message": "",
"result":
{
"phoneid": 600003,
"phonenumber": "12343423",
"phonetype": "Samsung Galaxy S2",
"imei": "343242",
"sim": "1234324",
"label": "Mr Bean",
"connecteddate": "2012-09-19 00:00:00.0",
"plan":
{
"planid": 34,
"planname": "$59 Jeenee Plan",
"billingIncrement": 30,
"owiStdUnitCost": 81.8181818181818,
"owiFlagFall": 0,
"stdCap": 636.3636,
"dataCap": 227.2665,
"smsCap": 1363.638,
"owiDataUnitCost": 0.022194,
"owiSms": 22.7272727272727
}
}
}
これらのフィールドは、クラスとデータベースでは double 型ですが、billingIncrement と owiFlagFall は整数型です。私はこれを気にしたくありませんが、返された JSON を再度 Spring resttemplate を使用してオブジェクトに変換するとエラーが発生します。これらのフィールドが 30.0 や 0.0 のように double 型の場合はエラーになりません。これは奇妙な動作に見えますが、本当です。何かアドバイスをいただけますか?あなたの答えをいただければ幸いです。