当前位置: 首页 > 面试题库 >

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

百里嘉泽
2023-03-14
问题内容

我有一个独特的情况,我必须从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的格式解析日期和时间?在我的代码中使用它。

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


问题答案:

我用这个: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(); 
}


 类似资料:
  • 我有一个独特的情况,我必须从JSON的深度嵌套对象中获得某些时间。这有点复杂,我找不到一个解决方案,所以寻找解决这个问题的想法和方法 是否有一种方法可以在这个级别检索started_at,并以8:00 am的格式解析日期和时间?在我的代码中使用它。 你知道怎么做吗?谢了!请让我知道,如果这是混淆或需要更多的澄清,很高兴张贴更多的代码。

  • 问题内容: 我有一个与此对象相似的JSON对象: 现在,我想将“ name”和“ mother”解析为该结构: 我想用struct标签指定JSON字段名称,但是我不知道该用什么作为标签,因为它不是我感兴趣的顶级对象。我在软件包文档中也没有找到关于此的任何内容博客文章JSON和Go。我还测试,和。 问题答案: 遗憾的是,与包不同,该包没有提供访问嵌套值的方法。您需要创建一个单独的Parents结构或

  • 问题内容: 我正在尝试解析JSON对象,其中的一部分看起来像这样: 等等.... 到目前为止,通过执行以下操作,我可以非常简单地解析: 但是,当我尝试将其用作“名称:”时,它将不起作用。 我试过了: 当我尝试这样做时,我得到“找不到JSONObject [业务]”。 当我尝试: 我得到了预期的“找不到JSONObject [名称]”。 我在这里做错了什么?我缺少一些基本的东西。 问题答案: 好吧,

  • 问题内容: 我正在尝试从上述JSON检索邮政编码。我正在用gson解析它。我是JSON的新手,从我在这里的所有文章中读到的内容(有些与此类似),我都知道字段名称应保持原样。所以我知道我必须做出4类,即响应,视图,结果和地址。我使它们成为静态嵌套类,但是我只得到空值作为输出。在下一个JSON中,我有多个地址。但是我只停留在这个单一的回应上。 举一个简短的例子,我尝试使用此代码检索Timestamp,

  • 我想做的是使用Gson将嵌套的json数据解析为Java对象,并使用自定义的toString()将其打印出来。 Json内容 POJO类:示例 POJO类:JsonFormatter 我的POJO还有其他类,我试图将其解析为Gson的方式是: 但是当我试图打印出它的子值时,比如 我得到了错误: 我想实现的是将上面的json内容打印成这样: 谁能帮我解决这个问题吗?提前谢谢!

  • 我正在使用来解析Json数据。我的Json数据如下: GsonParse.java 我使用以下方法来解析此JSON数据。 我面对以下错误。