正如标题所说,我正在努力让jsonPath不要抛出异常。我也只想读一遍json,然后把东西拉出来。下面是我的代码。我做错了什么?
List<Map<String, Object>> messageList = new ArrayList<>();
for (String message : messages) {
Map<String, Object> theData = new LinkedHashMap<>();
Object document = Configuration
.defaultConfiguration()
.addOptions(Option.SUPPRESS_EXCEPTIONS)
.jsonProvider().parse(message);
theData.put("Pk", JsonPath.read(document, "$.header.equipAssetGuid"));
theData.put("assetLocalDate", JsonPath.read(document, "$.header.assetLocalDate"));
theData.put("msgTs", JsonPath.read(document, "$.header.messageTiestamp"));
theData.put("utcOffset", JsonPath.read(document, "$.header.utcOffset"));
theData.put("msgId", JsonPath.read(document, "$.header.messageId"));
theData.put("lastUpdtdTs", JsonPath.read(document, "$.header.messageTimestamp"));
Object m = JsonPath.read(document, "$.fuelLevels[0].level");
if (m != null) {
theData.put("measurement", m);
}
messageList.add(theData);
}如果我在路径上大惊小怪,它总是抛出一个异常。
发布于 2020-02-14 02:11:43
想出了这个:
List<Map<String, Object>> messageList = new ArrayList<>();
for (String message : messages) {
Map<String, Object> theData = new LinkedHashMap<>();
Configuration conf = Configuration.defaultConfiguration()
.setOptions(Option.SUPPRESS_EXCEPTIONS);
DocumentContext documentContext = JsonPath.using(conf).parse(message);
theData.put("Pk", documentContext.read("$.header.equipAssetGuid"));
theData.put("assetLocalDate", documentContext.read("$.header.assetLocalDate"));
theData.put("msgTs", documentContext.read("$.header.messageTimestamp"));
theData.put("utcOffset", documentContext.read("$.header.utcOffset"));
theData.put("msgId", documentContext.read("$.header.messageId"));
theData.put("lastUpdtdTs", documentContext.read("$.header.messageTimestamp"));
Object m = documentContext.read("$.fuelLevels[0].level");
if (m != null) {
theData.put("measurement", m);
}
messageList.add(theData);
}https://stackoverflow.com/questions/60097963
复制相似问题