如果我们有一个POJO类,那么我们可以使用一些传入的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类映射它。
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。]
答案 0 :(得分:1)
我使用Generic JSON类型解决了它,Jackson的JsonNode
。我听到它有一些缺点,但我试一试。到目前为止,它的工作符合预期。如果我遇到任何挑战或者找到更好的解决方案,我会更新。
答案 1 :(得分:0)
你可以用map;喜欢
private Map<String, Object> meta_data;
答案 2 :(得分:0)
我遇到以下错误
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>>(){});
答案 3 :(得分:-1)
为什么不将meta_data
用作string
类型的字段而不是array
?然后,您可以将普通JSON添加为字符串,并在后端使用此值。
//add json as string value to this field
private String meta_data;