gpt4 book ai didi

java - 从 POJO 为 Jackson 创建 CN1 JSON 数组

转载 作者:行者123 更新时间:2023-11-30 02:54:46 26 4
gpt4 key购买 nike

好吧,我在将 CN1 端 POJO 从设备传输到可以使用和生成 JSON 的 Rest 服务时遇到了一些问题。

我设法使用 Jackson 生成的 JSON 在设备上进行解析并将其放入内部 SQLite 数据库中,设备端添加了一个字段,因为我需要一个外键来存储在 SQLite 数据库中。所以我从 Restservice 复制了 POJO,删除了 Hibernate 注释并添加了外键。

在 Restservice 方面,我运行 Hibernate,因此不需要外键,它通过 ArrayList 工作并正确映射。

因此,从服务获取元素工作正常,现在的问题是将更新的元素返回到服务和数据库。

在设备端,我正在运行 CN1-data-utils 库来获取和保存 SQLite 数据库上的项目。

这些项目被读取到 ArrayList,然后我想将它们作为 JSON 数组推送回 Rest 服务,该服务应该根据正确的格式直接将该 JSON 反序列化为对象。

CN1侧同步方法:

        Database db = Display.getInstance().openOrCreate(DBNAME);
DAOProvider provider = new DAOProvider(db, SQLCONFIG, DBVERSION);
provider.set("task", new TaskDAO(provider));
TaskDAO taskDAO = (TaskDAO) provider.get("task");
ArrayList<Task> tasks = (ArrayList<Task>) taskDAO.fetchAll();

ArrayList tasksForService = new ArrayList();
for (Task task : tasks) {
tasksForService.add(task.toJSON());
}

JSONObject tasksAsJSON = new JSONObject();
tasksAsJSON.put("tasks", tasksForService);
// tasksAsJSON.put("tasks", tasksForService);
db.close();

看起来像这样

{"tasks":["id=100001, name=somestuff, plannedDate=null, finishDate=null, status=5, commentary=xy, signature=100001_30.03.2016_signature.png","id=100002, name=somestuff2, plannedDate=null, finishDate=null, status=5, commentary=no comment, signature=100002_30.03.2016_signature.png","id=100004, name=bob, plannedDate=null, finishDate=null, status=5, commentary=, signature="]}

我在这里做错了,因为我从服务中获得的格式不同。看起来像这样,差别很大。

[{"id":100004,"name":"bob","plannedDate":1461103200000,"finishDate":1461106800000,"status":1,"description":null,"commentary":"","signature":""},
{"id":100001,"name":"somestuff","plannedDate":1457910000000,"finishDate":1459288800000,"status":1,"description":"blablub","commentary":"xy","signature":"100001_30.03.2016_signature.png"}]

以及CN1上的Task.java,只是为了有人想知道toJSON方法的作用,我尝试了这种方法,但这不是正确的解决方案。

@Override
public String toString() {
return "Task [id=" + id + ", projectId=" + projectId + ", name=" + name + ", plannedDate=" + plannedDate + ", finishDate=" + finishDate + ", status=" + status
+ ", commentary=" + commentary + ", signature=" + signature + "]";
}

public String toJSON() {
return "id=" + id + ", name=" + name + ", plannedDate=" + plannedDate + ", finishDate=" + finishDate + ", status=" + status + ", description=" + description
+ ", commentary=" + commentary + ", signature=" + signature;
}

是否有人可以发布一个使用 CN1JSON 生成 JSON 数组的小示例?

最佳答案

我正在用我的应用程序做非常相似的事情!例如:带有 cn1-data-access 库的 SQLite 数据库,用于 cn1 应用程序和带有 hibernate 和 jackson 插件的服务器端。

我开发了在 cn1-data-access 插件中递归映射/取消映射对象的方法。

仅供引用,我想你也可以使用这个:

HashMap objectMap = new HashMap();
myDAO.map(myObject, objectMap);
Result.fromContent(objectMap).toString();

这可以避免一一处理每个属性,特别是您应该在您的 dao 中实现 unmap/map 方法,因为您正在使用数据访问插件。

关于java - 从 POJO 为 Jackson 创建 CN1 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596021/

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