如何在 jersey REST 实现中获取纯 JSON 数据?
How to get plain JSON data in jersey REST implementation?
如果我们有一个 POJO class,那么我们可以将它映射到一些传入 JSON。我正在努力寻找一种方法,通过它我可以将所有普通的 json 值放在里面。
例如
{
"macro_tasks": [
{
"id": "cc5cee68-c1e5-4396-987b-c68559399186",
"label": "consi-1",
"name": "Consi 1",
"project_id": "82d1e463-1bb1-42d3-9adc-9e0d5848d139",
"creator_id": null,
"created_at": null,
"updated_at": null,
"meta_data": {
"key1": "value1",
"key2": 321
}
}
]
}
这里的meta_data
是JSON类型的,里面的值是可以不断变化的。所以我不能用一些 POJO class.
映射它
public class MacroTask {
private UUID id;
private String label;
private String name;
private UUID projectId;
private UUID creatorId;
private String createdAt;
private String updatedAt;
private <some data type> meta_data;
//getter and setter
有没有办法获取纯 JSON 数据并在代码中使用它并转储到数据库中[我们使用的是支持 jsonb
类型的 PostgreSQL。]
可以使用地图;喜欢
private Map<String, Object> meta_data;
我使用 Jackson 的 JsonNode
通用 JSON 类型解决了这个问题。我听说它有一些缺点,但我正在试一试。到目前为止,它按预期工作。如果我遇到任何挑战或找到更好的解决方案,我会更新。
我收到以下错误
Can not deserialize instance of java.lang.String out of START_OBJECT
我将此代码用于 json 字符串到 HasMap 的转换。
Map map = mapper.readValue(jsonString, new TypeReference<HashMap<String,String>>(){});
我把它替换成.
Map map = mapper.readValue(jsonString, new TypeReference<HashMap<String,Object>>(){});
如果我们有一个 POJO class,那么我们可以将它映射到一些传入 JSON。我正在努力寻找一种方法,通过它我可以将所有普通的 json 值放在里面。
例如
{
"macro_tasks": [
{
"id": "cc5cee68-c1e5-4396-987b-c68559399186",
"label": "consi-1",
"name": "Consi 1",
"project_id": "82d1e463-1bb1-42d3-9adc-9e0d5848d139",
"creator_id": null,
"created_at": null,
"updated_at": null,
"meta_data": {
"key1": "value1",
"key2": 321
}
}
]
}
这里的meta_data
是JSON类型的,里面的值是可以不断变化的。所以我不能用一些 POJO class.
public class MacroTask {
private UUID id;
private String label;
private String name;
private UUID projectId;
private UUID creatorId;
private String createdAt;
private String updatedAt;
private <some data type> meta_data;
//getter and setter
有没有办法获取纯 JSON 数据并在代码中使用它并转储到数据库中[我们使用的是支持 jsonb
类型的 PostgreSQL。]
可以使用地图;喜欢
private Map<String, Object> meta_data;
我使用 Jackson 的 JsonNode
通用 JSON 类型解决了这个问题。我听说它有一些缺点,但我正在试一试。到目前为止,它按预期工作。如果我遇到任何挑战或找到更好的解决方案,我会更新。
我收到以下错误
Can not deserialize instance of java.lang.String out of START_OBJECT
我将此代码用于 json 字符串到 HasMap 的转换。
Map map = mapper.readValue(jsonString, new TypeReference<HashMap<String,String>>(){});
我把它替换成.
Map map = mapper.readValue(jsonString, new TypeReference<HashMap<String,Object>>(){});