小编典典

如何使用Gson解析深层嵌套json对象中的字段并在android中进行改造?

java

我有一个独特的情况,我必须从json的深层嵌套对象中获取某些时间。这有点复杂,我找不到解决方案,所以正在寻找解决方案

我有一个JSON,如下所示:

[{
        "mySpaceId": 73220,
        "myBuildingId": 14019,
        "myFloorId": 10569,
        "myFloorNumber": "4",
        "myFloorName": "4th Floor",
        "spaceName": "My Room 4",
        "capacity": 5,
        "type": "huddle",
        "busyAt": []
    },
    {
        "mySpaceId": 73219,
        "myBuildingId": 14019,
        "myFloorId": 10569,
        "myFloorNumber": "4",
        "myFloorName": "4th Floor",
        "spaceName": "My room 5",
        "description": null,
        "capacity": 4,
        "type": "huddle",
        "timeZone": "America/New_York",

        "busyAt": [{
            "from": "2019-06-07T23:00:00+0000",
            "to": "2019-06-07T23:15:00+0000",
            "events": [{
                "id": "109142028",
                "series_id": null,
                "recurrence_id": null,
                "uid": "ABCDE",
                "space_id": 73219,
                "start": {
                    "date_time": "2019-06-07T19:00:00-0400",
                    "time_zone": "America/New_York"
                },
                "end": {
                    "date_time": "2019-06-07T19:15:00-0400",
                    "time_zone": "America/New_York"
                },
                "started_at": "2019-06-07T19:00:00-0400",
                "ended_at": "2019-06-07T19:15:00-0400"
            }]
        }]
    }
]

我用这个:http :
//www.jsonschema2pojo.org/从上面的json字符串生成一个类。我想知道如何检索“
started_at”:“ 2019-06-07T19:00:00-0400”,

从busyAt->事件到上述站点生成的主模型类中?说出与mySpaceId相同的级别。我目前使用以下内容:

 public List<BusyAt> getBusyAt() {
        return busyAt;
    }

    public void setBusyAt(List<BusyAt> busyAt) {
        this.busyAt = busyAt;
    }

有什么方法可以检索此级别的starts_at并以8:00 am的格式解析日期和时间?在我的代码中使用它。

任何想法如何去做?谢谢!请让我知道这是否令人困惑或需要进一步说明,很高兴发布更多代码。


阅读 343

收藏
2020-11-30

共1个答案

小编典典

我用这个:http :
//www.jsonschema2pojo.org/从上面的json字符串生成一个类。我想知道如何从busyAt->事件中检索“
started_at”:“
2019-06-07T19:00:00-0400”到上述站点生成的主模型类中?说出与mySpaceId相同的级别。我目前使用以下内容:

如果我正确地理解了您,则说明您已经使用www.jsonschema2pojo.org创建了以下类别:-

  • 一个名为“ Entity”的类,其中包含“ mySpaceId”和“ BusyAt”列表。
  • 类“ BusyAt”包含“事件”列表。
  • 类“事件”包含一个名为StartedAt的字符串。

我假设您想直接从最顶层的类(“实体”)检索每个列表的“第一”条目(如果存在)

就像是: -

如果busyAt或事件列表为空或为null,则entity.busyAt(0).events(0).startedAt
,然后为startedAt返回空字符串。

您可以做的是在“ Entity”类(包含mySpaceId和List的根类)中创建以下方法。

public String getStartedAt(){
  //check if the busyAt List contains items or not.
  if (busyAt ==null || busyAt.isEmpty()){
    return "";
  }
  //take the list of events from the first busyAt in the array
  List<Event> eventList = busyAt.get(0).getEvents();
  //check if the event List contains items or not.
  if (eventList ==null || eventList.isEmpty()){
    return "";
  }
  //return the StartAt value of the first event.
  return eventList.get(0).getStartedAt(); 
}
2020-11-30