gpt4 book ai didi

java - 使用 ID 引用将 JSON 实体反序列化为 POJO

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:21 25 4
gpt4 key购买 nike

假设我们有以下 JSON 示例:

{
"teachers": [{
"id": "abc",
"payment": 10,
"name": "xyz",
"clases": ["1", "3"]
}, {
"id": "qwe",
"payment": 12,
"name": "xcv",
"classes": ["1", "2"]
}],
"classes": [{
"id": "1",
"room": 7
}, {
"id": "2",
"room": 1
}, {
"id": "3",
"room": 2
}]
}

我想将其反序列化为 Java 对象(省略 getters/setters):

class Teacher {
private String id;
private double payment;
private String name;
private List<CLassRoom> classRooms;
}

class ClassRoom {
private String id;
private int room;
}

如您所见,我们这里有引用文献。我知道我可以用 Jackson 反序列化它(并且愿意),但问题是我无法触及 DTO 本身(因此注释是不可能的,也想避免包装器(许多类))。另外,如果反序列化的“配置”位于单独的文件中(例如 json schema),那就太好了。我还想避免用户给出的一些标签 - 他应该只向我传递值。而且,如果他犯了什么错误,他应该知道错误在哪里。另外,如果我可以操作 json 中的字段名称,那就太好了(有些客户可能有不同的习惯)。

我没有找到任何满足上述所有要求的东西(实体引用和错误处理是最重要的)。然而 - 我刚刚听说过 json 模式,所以也许它提供了这样的功能(但我没有找到它)。有任何有用的引用/示例/lib吗?我将不胜感激任何帮助。

为了正确起见 - 假设给定的 json 是实例的RELATIONAL数据库快照。我只想像 hibernate(或实际上是 JPA)那样创建整个实体:)

最佳答案

1. add jar of import org.json.JSONObject.

2. JSONObject object = new JSONObject(list)
2.1 object.has("teachers") if it is exists
2.2 JSONArray teacherArray = (JSONArray) object.get("teachers");
2.3 JSONObject teacherJsonObject = teacherArray .getJSONObject(0);
(if you have more than jsonobject in json arrary then itrate it.)
2.4 if(teacherJsonObject .has("id"))//you can check existence like this.
String id=teacherJsonObject .getString("id");
String payment=teacherJsonObject .getString("payment");
String name=teacherJsonObject .getString("name");

关于java - 使用 ID 引用将 JSON 实体反序列化为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50598365/

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