I'm building an API to show data in a Visualforce page. After I created the classes and the callout it responses with a JSON string. For now I use a mock JSON string to test my deserialize function.
Sadly it does not work, it says in the log files that the object contains attributes which are still null.
My classes:
public class MortgageContract {
//@SerializedName('Number')
public String Id {get;set;}
public String Description {get;set;}
public Collateral Collateral {get;set;}
public String EffectiveDate {get;set;}
public String InitialAmount {get;set;}
public String ProRestoAmount {get;set;}
public List<Borrower> Borrowers {get;set;}
public List<LoanPart> LoanParts {get;set;}
}
public class Collateral{
public Address Address {get;set;}
public String MarketValue {get;set;}
}
public class Address{
public String StreetAddress {get;set;}
public String ZipCode {get;set;}
public String City {get;set;}
}
public class Borrower{
public String Name {get;set;}
}
public class LoanPart{
public String Loanpartid {get;set;}
public String Description {get;set;}
public String ProRestoAmount {get;set;}
public String InterestRate {get;set;}
public String InterestType {get;set;}
public String TermAmount {get;set;}
public String TermPayment {get;set;}
public String TimePayment {get;set;}
public Boolean NHG {get;set;}
public String EffectiveDate {get;set;}
public String EndDateLoanpart {get;set;}
public String DurationLoanpart {get;set;}
public String EndDateFixedInterestRatePeriod {get;set;}
}
My JSON response:
{
"mortgageContract": {
"id": "H0000000",
"number": "H0000000",
"productcode": "COM",
"description": "Combinatiehypotheek",
"collateral": {
"address": {
"streetAddress": "A VD NEERSTR 9",
"zipCode": "5702 CJ",
"city": "HELMOND"
},
"marketValue": "167500.00"
},
"effectiveDate": "2007-06-01",
"initialAmount": "209375.00",
"redemptionAmount": "35142.96",
"proRestoAmount": "174232.04",
"redemptionPercentage": "16.78",
"loanToValue": "106.00",
"prepayments": {
"redemptionAmountActual": "0.00",
"redemptionFreeAmountActual": "0.00",
"redemptionFreeAmount": "20937.50",
"redemptionFreePercentage": "10.00"
},
"borrowers": [{
"name": "T.G.V.T. Sick - Bos"
}],
"lifeInsurances": [{
"number": "2134437"
}],
"loanParts": [{
"loanpartid": "H0000000-1",
"loanpartnumber": "1",
"productcode": "USH",
"description": "Spaarhypotheek",
"proRestoAmount": "50000.00",
"interestRate": "5.30",
"interestType": "Variabele rente",
"termAmount": "0.00",
"termType": "Rente",
"termPayment": "Maandelijks",
"timePayment": "Achteraf",
"termComposition": {
"termCompositionType": "Alleen rente",
"termInterestAmount": "0.00"
},
"NHG": false,
"redemptionDescription": "Bij deze hypotheekvorm betaalt u alleen rente, en lost u tijdens de looptijd niet direct af. Pas aan het einde van de looptijd lost u de hele hypotheek in één keer af. U spaart hiervoor in de gekoppelde levensverzekering.",
"effectiveDate": "2007-06-01",
"endDateLoanpart": "2037-06-01",
"durationLoanpart": "30",
"endDateFixedInterestRatePeriod": "2017-06-01",
"prepayment": {
"isAllowed": false,
"producttype": "Non-ALA-PR"
}
},
{
"loanpartid": "H0000000-2",
"loanpartnumber": "2",
"productcode": "ALV",
"description": "Aflossingsvrije hypotheek",
"proRestoAmount": "67076.73",
"interestRate": "2.34",
"interestType": "Vaste rente",
"termAmount": "130.80",
"termType": "Rente",
"termPayment": "Maandelijks",
"timePayment": "Achteraf",
"termComposition": {
"termCompositionType": "Alleen rente",
"termInterestAmount": "130.80"
},
"NHG": false,
"redemptionDescription": "Bij deze hypotheekvorm lost u tijdens de looptijd niets af. U betaalt de openstaande lening terug aan het einde van de looptijd. Of op het moment dat u verhuist. Hiervoor gebruikt u eigen geld. Maar u kunt ook de opbrengst uit de verkoop van uw woning gebruiken.",
"effectiveDate": "2007-06-01",
"endDateLoanpart": "2037-06-01",
"durationLoanpart": "30",
"endDateFixedInterestRatePeriod": "2019-06-01",
"prepayment": {
"isAllowed": false,
"producttype": "NON-ALA"
}
}
]
}
}
My deserialize function:
public static MortgageContract deserialize(httpResponse res){
System.debug('Begin deserializing: + '+ res.getBody());
return (MortgageContract)JSON.deserialize(res.getBody(),MortgageContract.class);
}
Please help me out!