当前位置: 首页 > 知识库问答 >
问题:

迭代并修改JSONObject

张毅
2023-03-14

我有一个json blob,如下所示:

    {
    "name": "ABC",
    "type": "School",
    "state": {
        "events" : [
            {
                "event": "Session Start",
                "timestamp" : 1.6504826230744574E9,
                "name": "Session Start 2020",
                "venue" : "London"
            },
            {
                "event": "Parents Meet",
                "timestamp" : 1.6504826230744574E9,
                "name": "Parents Meet 2020",
                "venue" : "London",
                "noOfAttendees" : 40
            },
            {
                "event": "Annual Fair",
                "timestamp" : 1.6504826230744574E9,
                "name": "Annual Fair 2020",
                "venue" : "London",
                "noOfvendors" : 10,
                "vendorDetails": {
                    ...
                }
            },
            {
                "event": "Session Start",
                "timestamp" : 1.6504826881501477E9,
                "name": "Session Start 2021",
                "venue" : "US"
            },
            {
                "event": "Assembly",
                "timestamp" : 1.6504826881501477E9,
                "name": "Assembly 2021",
                "venue" : "US",
                "noOfAttendees" : 50
            },
            {
                "event": "Annual Fair",
                "timestamp" : 1.6504826881501477E9,
                "name": "Annual Fair 2021",
                "venue" : "US",
                "noOfvendors" : 20,
                "vendorDetails": {
                    ...
                }
            }
    
        ],
        "group" : "A"
    }
}

这只是一个在这里发布的例子。在这个例子中,我们看到它提供了一个学校每年发生的所有事件的列表,该列表是一个累积列表,即上一年的事件也会被追加。我们知道的是,每年的活动都将以“会议开始”活动开始。我想通过这件事,以最新的一系列事件结束。请忽略事件名称中的时间戳或年份,它们只是示例,我在现实世界中没有此类信息。我需要的最终结果是:

{
    "name": "ABC",
    "type": "School",
    "state": {
        "events" : [
            {
                "event": "Session Start",
                "timestamp" : 1.6504826881501477E9,
                "name": "Session Start 2021",
                "venue" : "US"
            },
            {
                "event": "Assembly",
                "timestamp" : 1.6504826881501477E9,
                "name": "Assembly 2021",
                "venue" : "US",
                "noOfAttendees" : 50
            },
            {
                "event": "Annual Fair",
                "timestamp" : 1.6504826881501477E9,
                "name": "Annual Fair 2021",
                "venue" : "US",
                "noOfvendors" : 20,
                "vendorDetails": {
                    ...
                }
            }
    
        ],
        "group" : "A"
    }
}

所以,我想保留从“会话开始”事件开始的最后一组事件。我确信会有

我可以使用JSONObject和JSONArray对其进行迭代,但我不确定如何编辑该对象。请注意,每年的活动名称可能会有所不同,例如,由于新冠病毒,我们可能不会在2022年举办“年度博览会”,等等。唯一静态的是我需要从底部抓住的“会议开始”活动。

共有1个答案

祝叶五
2023-03-14

你可以用jsonArray转换为list,列表数据,你定义了一个Class,这个class包含事件,时间戳所有字段,迭代这个list过滤,最后,转换为json

 类似资料:
  • 当我使用temp=iterator.next()时,sort方法会导致并发修改错误。你能帮我解决并发修改错误吗。我给出了整个类的代码,但我只是尝试完成sort方法。事先谢谢你的帮助。 我必须对ArrayList中的所有数组进行排序。

  • 我对java相当陌生,实际上我正在编写一个键盘记录器,并让它定期写入文件。每当用户按下某个键时,它都会实例化一个NativeKeyEvent,该事件调用“param string()”并将信息作为字符串添加到下面的arraylist中... 然后,在每一个间隔,字符串数组被传递,并被写入下面的TimerTask线程中的文件。 行'str=iterator.next().tostring();‘然后

  • 问题内容: 我知道您不应在遍历列表时添加/删除项目。但是,如果不更改列表长度,是否可以修改要迭代的列表中的项目? 还是应该迭代列表索引?像那样: 问题是:以上两种方式都是允许的,还是只有第二种是没有错误的? 如果答案是肯定的,以下代码段是否有效? UPD。我想在python文档中看到“允许这些操作”而不是某人的假设。 问题答案: 可以这么说,您 不是在 修改列表。您只是在修改列表中的元素。我不认为

  • 问题内容: 上面的python代码使输出与预期的完全不同。我想循环播放项目,以便在循环播放时可以跳过某个项目。 问题答案: 该代码试图在迭代列表时修改列表。我在任何情况下都不会这样做。 你可以使用运算符跳过列表中的每三个项目。 关于我的示例的其他要点与中的新语法有关。 我使用列表推导定义t,因为它在中有效(请参见下文) t是中的函数 现在,的行为类似于,但它适用于任意大小的值。后者不再存在。

  • 比如说,我做了如下事情: 其中通过几层代码间接地为

  • 问题内容: 假设我们有一个Python字典,我们正在像这样迭代它: (并且仅仅是一些黑盒转换。) 换句话说,我们尝试在使用对其进行迭代的同时向其中添加/删除项目。 这个定义好吗?您能否提供一些参考来支持您的答案? (很明显,如果损坏了该如何解决,所以这不是我所追求的角度。) 问题答案: 在python文档页面(针对2.7)上明确提到了 使用而添加或删除字典条目可能会产生一种或无法遍历所有条目。 对