解析JSON记录以提取键和值并在java中放入Map

时间:2011-07-12 10:37:43

标签: java json spring-mvc

我的表中有一列将以字符串格式存储数据样本数据

{"pre-date":{"enable":true,"days":"3","interval":"1","mail-template":"582"},"on-date":{"enabled":false},"post-date":{"enabled":false}}

,字符串包含json数据等数据 但是当我发送此记录供控制器查看时,它应该采用格式

enable : true
days : 3
interval : 1

这样我就可以设置各个表单元素的值如何在java中帮助

2 个答案:

答案 0 :(得分:3)

从数据库中读取完整的JSON字符串,然后使用JSON解析器解析它,并从解析返回的数据结构/对象中提取您感兴趣的信息。

有许多JSON解析器可用。查看this page,其中列出了Java部分中的一些(您必须向下滚动一点)。

答案 1 :(得分:1)

Jackson为将任何JSON对象简单转换为仅由Java SE组件组成的Java Map提供了最佳支持。

以下是使用原始问题中的JSON的示例。

// {"pre-date":{"enable":true,"days":"3","interval":"1","mail-template":"582"},"on-date":{"enabled":false},"post-date":{"enabled":false}}
String json = "{\"pre-date\":{\"enable\":true,\"days\":\"3\",\"interval\":\"1\",\"mail-template\":\"582\"},\"on-date\":{\"enabled\":false},\"post-date\":{\"enabled\":false}}";

ObjectMapper mapper = new ObjectMapper();

// To put all of the JSON in a Map<String, Object>
Map<String, Object> map = mapper.readValue(json, Map.class);

// Accessing the three target data elements
Map<String, Object> preDateMap = (Map) map.get("pre-date");
System.out.println(preDateMap.get("enable"));
System.out.println(preDateMap.get("days"));
System.out.println(preDateMap.get("interval"));