【发布时间】:2019-10-07 14:42:45
【问题描述】:
我有一个像 {"xxx.Name-xxx-1111111":"100"} 这样的 json
其中 1111111 是时间戳,100 是值
我需要将时间戳和值放入 jpa 并通过 spring 插入数据库。
我怎样才能解析这个字符串并把它放到 jpa 中?
【问题讨论】:
我有一个像 {"xxx.Name-xxx-1111111":"100"} 这样的 json
其中 1111111 是时间戳,100 是值
我需要将时间戳和值放入 jpa 并通过 spring 插入数据库。
我怎样才能解析这个字符串并把它放到 jpa 中?
【问题讨论】:
有一些流行的库可以将 JSON 映射到具有您选择的类型的对象。
谷歌的GSON不错,使用也很简单:https://mvnrepository.com/artifact/com.google.code.gson/gson
JSON 到对象
Gson gson = new Gson();
MyObject myObject = gson.fromJson(jsonString, MyObject.class)
这应该将 json 转换为您想要的格式,以便您可以保留它。
【讨论】:
您可以使用流行的 JSON 库(例如 Jackson 或 Gson)解析给定的 JSON 字符串,如下所示。
首先,1111111 不是有效的Timestamp 格式,应该是这样的 {"xxx.Name-xxx-2019-10-08 09:00:00强>":"100"}。
其次,使用Jackson API 解析 JSON 字符串,获取 key 和 value 字段。
第三,我假设时间戳值的前缀是xxx.Name-xxx-,那么你可以检索它(说2019-10-08 09:00:00 >) 使用String.replace()。
示例代码:
String jsonStr = "{\"xxx.Name-xxx-2019-10-08 09:00:00\":\"100\"}";
ObjectMapper mapper = new ObjectMapper();
for (Iterator<Map.Entry<String, JsonNode>> it = mapper.readTree(jsonStr).fields(); it.hasNext();) {
Map.Entry<String, JsonNode> field = it.next();
String key = field.getKey();
int value = field.getValue().asInt();
System.out.println("key: " + key);
System.out.println("value: " + value);
Timestamp timestamp = Timestamp.valueOf(key.replace("xxx.Name-xxx-", ""));
System.out.println("timestamp: " + timestamp);
}
控制台输出:
key: xxx.Name-xxx-2019-10-08 09:00:00
value: 100
timestamp: 2019-10-08 09:00:00.0
最后,我认为你可以直接使用这两个变量:timestamp 和 value 用于 JPA。
【讨论】: