テスト サーバーから Json 文字列が返されました。Android アプリは問題なく動作していますが、MappingJackson2HttpMessageConverter を使用してそれをオブジェクトに移動しようとすると、リストである 1 つのフィールドで失敗します。
理由を理解できないようです。成功せずに多数の注釈を試しましたが、エラーは次のとおりです。
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "HourlySalesFigures" (class org.springframework.android.showcase.DayData),
not marked as ignorable (15 known properties: , "nextDate", "totalLoyalty", "previousDate", "totalCheque", "numberOfLoyaltySales", "totalGrand", "numberOfChequeSales", "hourlySalesFigures", "totalCard", "totalCash", "totalCharge" [truncated]])
返された JSON データ:
{"HourlySalesFigures":[{"hour":0,"numberOfSales":0,"totalOfSales":0},{"hour":1,"numberOfSales":0,"totalOfSales":0},{"hour":2,"numberOfSales":0,"totalOfSales":0},{"hour":3,"numberOfSales":0,"totalOfSales":0},{"hour":4,"numberOfSales":0,"totalOfSales":0},{"hour":5,"numberOfSales":0,"totalOfSales":0},{"hour":6,"numberOfSales":0,"totalOfSales":0},{"hour":7,"numberOfSales":0,"totalOfSales":0},{"hour":8,"numberOfSales":0,"totalOfSales":0},{"hour":9,"numberOfSales":0,"totalOfSales":0},{"hour":10,"numberOfSales":4,"totalOfSales":548},{"hour":11,"numberOfSales":1,"totalOfSales":3},{"hour":12,"numberOfSales":7,"totalOfSales":209.5},{"hour":13,"numberOfSales":8,"totalOfSales":528.4},{"hour":14,"numberOfSales":13,"totalOfSales":1196.8},{"hour":15,"numberOfSales":9,"totalOfSales":1422.2},{"hour":16,"numberOfSales":12,"totalOfSales":321.5},{"hour":17,"numberOfSales":22,"totalOfSales":493.5},{"hour":18,"numberOfSales":21,"totalOfSales":740.5},{"hour":19,"numberOfSales":28,"totalOfSales":1180.5},{"hour":20,"numberOfSales":8,"totalOfSales":377.5},{"hour":21,"numberOfSales":9,"totalOfSales":859.8},{"hour":22,"numberOfSales":28,"totalOfSales":11193.8},{"hour":23,"numberOfSales":1,"totalOfSales":107}],"TargetDate":"2013/02/13","PreviousDate":"2013/02/12","NextDate":"2013/02/14","NumberOfCashSales":126,"TotalCash":8432.1,"NumberOfCardSales":23,"TotalCard":9775.9,"NumberOfChequeSales":0,"TotalCheque":0,"NumberOfLoyaltySales":0,"TotalLoyalty":0,"NumberOfChargeSales":22,"TotalCharge":974.0,"TotalGrand":19182.0}
これを入れようとしているJavaオブジェクトは次のとおりです(簡潔にするためにゲッターとセッターを省略していることに注意してください)
DayData クラス
@Root
public class DayData {
@ElementList(name="HourlySalesFigures", inline=true)
protected List<HourSalesItem> hourlySalesFigures;
@Element(name="TargetDate")
protected String targetDate;
@Element(name="PreviousDate")
protected String previousDate;
@Element(name="NextDate")
protected String nextDate;
@Element(name="NumberOfCashSales")
protected int numberOfCashSales;
@Element(name="TotalCash")
protected double totalCash;
@Element(name="NumberOfCardSales")
protected int numberOfCardSales;
@Element(name="TotalCard")
protected double totalCard;
@Element(name="NumberOfChequeSales")
protected int numberOfChequeSales;
@Element(name="TotalCheque")
protected double totalCheque;
@Element(name="NumberOfLoyaltySales")
protected int numberOfLoyaltySales;
@Element(name="TotalLoyalty")
protected double totalLoyalty;
@Element(name="NumberOfChargeSales")
protected int numberOfChargeSales;
@Element(name="TotalCharge")
protected double totalCharge;
@Element(name="TotalGrand")
protected double totalGrand;
public DayData(List<HourSalesItem> HourlySalesFigures, String targetDate, String previousDate, String nextDate, int numberOfCashSales, double totalCash, int numberOfCardSales, double totalCard, int numberOfChequeSales, double totalCheque, int numberOfLoyaltySales, double totalLoyalty, int numberOfChargeSales, double totalCharge, double totalGrand) {
this.hourlySalesFigures = HourlySalesFigures;
this.targetDate = targetDate;
this.previousDate = previousDate;
this.nextDate = nextDate;
this.numberOfCashSales = numberOfCashSales;
this.totalCash = totalCash;
this.numberOfCardSales = numberOfCardSales;
this.totalCard = totalCard;
this.numberOfChequeSales = numberOfChequeSales;
this.totalCheque = totalCheque;
this.numberOfLoyaltySales = numberOfLoyaltySales;
this.totalLoyalty = totalLoyalty;
this.numberOfChargeSales = numberOfChargeSales;
this.totalCharge = totalCharge;
this.totalGrand = totalGrand;
}
public DayData()
{
}
}
HourSalesItem クラス
@Root
public class HourSalesItem{
@Element
private int hour;
@Element
private int numberOfSales;
@Element
private double totalOfSales;
public HourSalesItem(int hour, int numberOfSales, double totalOfSales) {
this.hour = hour;
this.numberOfSales = numberOfSales;
this.totalOfSales = totalOfSales;
}
public HourSalesItem(){
}
}