Java 如何访问JSON对象的名称?

Java 如何访问JSON对象的名称?,java,json,spring,firebase,firebase-realtime-database,Java,Json,Spring,Firebase,Firebase Realtime Database,我从Firebase实时数据库返回了这个JSON { "betslipid-4322": { "amount": 100, "bets": [ { "betType": "FT_RESULT_0", "matchid": "ts-fb", "odd": 2.4,

我从Firebase实时数据库返回了这个JSON

{
       "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的属性(包括开头的属性)放在下面的Java类中

public class BetSlip {

    private List<Bet> bets;

    private Float amount;

    private BetStatus status;

    private betSlipID;
}
公共类{
私人名单投注;
私人浮动金额;
私人投注状态;
私人投注;
}
但是,在本例中,我无法访问betslipid,即“betslipid-4322”和“betslipid-4323”,并且我也无法通过以下代码将JSON转换为我的java类

private RestTemplate restTemplate = new RestTemplate();
List<BetSlip> betSlip = restTemplate.getForObject(getDatabaseLink("incomplete-betslips"), ArrayList.class);
private RestTemplate RestTemplate=new RestTemplate();
List betSlip=restemplate.getForObject(getDatabaseLink(“不完整的betSlip”),ArrayList.class);

请注意,当我得到JSON响应时,我不知道betSlipID的名称,因此我无法创建另一个包含名为传入betSlipID的变量的类。

以下@Noshaf的注释是解决方案:

HashMap<String,BetSlip> betSlipWithoutID = restTemplate.getForObject(getDatabaseLink("incomplete-betslips"), HashMap.class);

现在,betSlip已准备好与设置的betSlipID属性一起使用。

下面是@Noshaf的评论,这里是解决方案:

HashMap<String,BetSlip> betSlipWithoutID = restTemplate.getForObject(getDatabaseLink("incomplete-betslips"), HashMap.class);

我们开始吧,betSlip已准备好与设置了betSlipID属性的betSlipID一起使用。

我并不是说这是最佳的,但您可以按照此来完成任务,因为您的
betSlipID-x
是可变的,我仅描述要遵循的步骤:

  • 只需从
    restTemplate
    返回一个json对象,请参见
  • 在返回的json上应用
    keySet()
    获取密钥,您将获得所有的密钥
  • 基于此,获取该键的关联对象并在
    BetSlip
    类中反序列化,然后将该键设置为
    betSlipID
  • 这样你就得到了你想要的东西
  • 这应该是你的工作。

    如果您需要进一步澄清,请告诉我。

    我并不是说这是最佳的,但您可以按照这一点来完成任务,因为您的
    x
    是可变的,我只描述要遵循的步骤:

  • 只需从
    restTemplate
    返回一个json对象,请参见
  • 在返回的json上应用
    keySet()
    获取密钥,您将获得所有的密钥
  • 基于此,获取该键的关联对象并在
    BetSlip
    类中反序列化,然后将该键设置为
    betSlipID
  • 这样你就得到了你想要的东西
  • 这应该是你的工作。

    如果您需要进一步澄清,请告诉我。

    您可以创建一个包含列表的类。并映射到那个家长身上class@Noshaf我已经试过了,但这并不能帮助我得到betSlipIDslet-give-try-to-HashMap。你可以创建一个包含列表的类。并映射到那个家长身上class@Noshaf我已经试过了,但这并不能帮助我获得betSlipIDslet try to HashMap。谢谢,这几乎就是我解决问题的方法。我接受你的答案,但是那些需要你在这里描述的代码示例的人可以看看我的答案。没错,理论在这里,代码在你的答案中:D!谢谢,这几乎就是我解决问题的方法。我接受你的答案,但是那些需要你在这里描述的代码示例的人可以看看我的答案。没错,理论在这里,代码在你的答案中:D!