我有此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
这样就得到了想要的对象。


这应该做你的工作。
让我知道您是否需要进一步澄清。

10-02 00:48