gpt4 book ai didi

java - 处理 JSON 更改信息的最佳方式

转载 作者:行者123 更新时间:2023-12-01 22:42:39 24 4
gpt4 key购买 nike

我正在寻找一种方法来处理我在 JSON 文件中收到的信息。这个文件应该不断变化(其他人和程序将访问它),所以一会儿它就会像这个例子:

{
"activities": [
{
"name": "do my homework",
"status": "not yet done",
"important": true
},
{
"name": "wash the dishes",
"status": "not yet done",
"important": true
},
{
"name": "play videogames",
"status": "done",
"important": false
},
{
"name": "take a shower",
"status": "done",
"important": true
}
]
}

15分钟后(只是说一个时间量)就会像这样

{
"activities": [
{
"name": "do my homework",
"status": "done", //NOTICE THIS ACTIVITY WAS DONE
"important": true
},
{
"name": "wash the dishes",
"status": "not yet done",
"important": false //NOTICE THIS HAS CHANGED ITS IMPORTANCE
},
{
"name": "play videogames",
"status": "done",
"important": false
},
{
"name": "take a shower",
"status": "done",
"important": true
},
{ //NOTICE I'VE ADDED A NEW ACTIVITY
"name": "take another shower",
"status": "not yet done",
"important": false
}
]
}

我想知道的是如何在 Java 中处理这些变化(至少是一个想法),这可以帮助我检测这些变化并处理它们。

我正在考虑创建两个数组列表(doneActivities 和 notYetDoneActivities),每 10 分钟调用 json 文件并检查是否有更改,并且可能在这些数组列表之间切换对象(听起来不错,但我不知道如何才能做吧)。

或者我什至可以使用 mysql 数据库,但我认为它可能会进一步使我的代码变得更加复杂,而我试图使其尽可能简单。

请注意,我的 Activity 类是这样的:

public class Activity {
private String name;
private boolean done;
private boolean important;
//Getters and setters
}

如有任何建议,我们将不胜感激。

最佳答案

您需要一个身份字段 - 每个 Activity 都是唯一的,以便您始终可以区分已处理的 Activity 和出现的新 Activity 。您还没有提到 json 数据是如何生成的,但是如果涉及到数据库,那么它可能已经存储了一个可以包含在 json 中的 id。

public class Activity {
private long id;
private String name;
private boolean done;
private boolean important;
//Getters and setters

@Override
public boolean equals(Object o) {
if (o instanceof Activity) {
Activity other = (Activity) o;
return this.getId() == other.getId();
}
return false;
}
}

equals 方法将允许您将您的 Activity 存储在一个集合中,例如HashSet

关于java - 处理 JSON 更改信息的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com