0

@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 型の場合はエラーになりません。これは奇妙な動作に見えますが、本当です。何かアドバイスをいただけますか?あなたの答えをいただければ幸いです。

4

0 に答える 0