我有此JSON从Firebase Realtime数据库返回了我。
{
"betslipid-4322": {
"amount": 100,
"bets": [
{
"betType": "FT_RESULT_0",
"matchid": "ts-fb",
"odd": 2.4,
"status": "WAITING"
}
],
"status": "WAITING"
},
"betslipid-4323": {
"amount": 7.5,
"bets": [
{
"betType": "FT_RESULT_2",
"matchid": "gs-fb",
"odd": 2.7,
"status": "WAITING"
},
{
"betType": "FT_RESULT_1",
"matchid": "gs-gb",
"odd": 1.3,
"status": "WAITING"
}
],
"status": "WAITING"
}
}
我想将此JSON的属性(在开头包括betSlipID)放置在以下Java类中。
public class BetSlip {
private List<Bet> bets;
private Float amount;
private BetStatus status;
private betSlipID;
}
但是,在这种情况下,我无法访问“ betslipid-4322”和“ betslipid-4323”的betSlipID,也无法通过以下代码将JSON转换为Java类。
private RestTemplate restTemplate = new RestTemplate();
List<BetSlip> betSlip = restTemplate.getForObject(getDatabaseLink("incomplete-betslips"), ArrayList.class);
请注意,获取JSON响应时我不知道betSlipID,因此无法创建另一个类,该类包含名为传入的betSlipID的变量。
最佳答案
我并不是说这是最佳选择,但是由于您的betslipid-x
是变量,因此您可以按照以下步骤执行任务,我仅描述要遵循的步骤:
只需从restTemplate
返回json对象,请参见Spring restTemplate get raw json string
获取在您返回的json上应用keySet()
的键,您将获得所有betslipid-x
基于此,获取该键的关联对象,并在您的BetSlip
类中反序列化并将该键设置为betSlipID
。
这样就得到了想要的对象。
这应该做你的工作。
让我知道您是否需要进一步澄清。