Я пытаюсь преобразовать Json в объект Java. У меня есть строка с именем result , и я хочу преобразовать ее в объект Java, класс которого TransferRecord.java
Это часть строки, которую я использую в качестве ввода.
{
"TransferRecord": {
"TransferId": {
"TransferRef": "string",
"DistributorRef": "string"
},
"SkuCode": "string",
"Price": {
"CustomerFee": 0,
"DistributorFee": 0,
"ReceiveValue": 0,
"ReceiveCurrencyIso": "string",
"ReceiveValueExcludingTax": 0,
"TaxRate": 0,
"TaxName": "string",
"TaxCalculation": "string",
"SendValue": 0,
"SendCurrencyIso": "string"
},
"CommissionApplied": 0,
"StartedUtc": "2019-01-31T10:10:20.527Z",
"CompletedUtc": "2019-01-31T10:10:20.527Z",
"ProcessingState": "string",
"ReceiptText": "string",
"ReceiptParams": {},
"AccountNumber": "string"
},
"ResultCode": 0,
"ErrorCodes": [
{
"Code": "string",
"Context": "string"
}
]
}
Это класс TransferRecord.Я проверил сопоставление json, и они полностью идентичны. Обратите внимание, что в классе доступно больше полей, но я просто вставил его часть. Количество свойств во входной строке и классе java одинаковы.
public class TransferRecord {
@JsonProperty("TransferId")
private TransferId transferId = null;
@JsonProperty("SkuCode")
private String skuCode = null;
@JsonProperty("Price")
private Price price = null;
@JsonProperty("CommissionApplied")
private BigDecimal commissionApplied = null;
@JsonProperty("StartedUtc")
private Date startedUtc = null;
@JsonProperty("CompletedUtc")
private Date completedUtc = null;
@JsonProperty("ProcessingState")
private String processingState = null;
@JsonProperty("ReceiptText")
private String receiptText = null;
@JsonProperty("ReceiptParams")
private Map<String, String> receiptParams = null;
@JsonProperty("AccountNumber")
private String accountNumber = null;
public TransferRecord transferId(TransferId transferId) {
this.transferId = transferId;
return this;
}
}
Ниже приведен мой код, который я использовал для преобразования. Обратите внимание, что эти три куска кода будут служить одной и той же цели, и я попробовал их отдельно.
ObjectMapper mapper = new ObjectMapper();
//1 TransferRecord objTransRecord = mapper.readValue(result, TransferRecord.class);
//2 TransferRecord objTransRecord = mapper.readerWithView(TransferRecord.class).forType(TransferRecord.class).readValue(result);
//3 TransferRecord objTransRecord = mapper.readerFor(TransferRecord.class).readValue(result);
Проблема заключается в том, когда я пытаюсь создать объект,каждому значению присваивается значение ноль во всех трех подходах, даже если в строке имеются соответствующие данные.Может кто-нибудь указать, что я здесь делаю не так?
Заранее спасибо.:)