我正在尝试使用Jackson JSON来获取一个字符串并确定它是否为有效的JSON。 有人可以建议一个可用的代码示例吗?(Java)
我想使用Jackson JSON来判断一个字符串是否是合法的JSON格式。请问有没有可用的Java代码示例可以提供?我正在尝试使用Jackson JSON来获取一个字符串并确定它是否为有效的JSON。 有人可以建议一个可用的代码示例吗?(Java)
我想使用Jackson JSON来判断一个字符串是否是合法的JSON格式。请问有没有可用的Java代码示例可以提供?不确定你使用这个的目的是什么,但这应该可以解决:
public boolean isValidJSON(final String json) {
boolean valid = false;
try {
final JsonParser parser = new ObjectMapper().getJsonFactory()
.createJsonParser(json);
while (parser.nextToken() != null) {
}
valid = true;
} catch (JsonParseException jpe) {
jpe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return valid;
}
try{ ObjectMapper objectMapper = ...; JsonNode jsonNode = objectMapper.readTree(yourJsonString); } catch(JsonProcessingException e){........}
注:上述代码需要读取JSON字符串并将其转换成JsonNode对象。 - AbhijeetString json = "{ \"foo\" : \"bar\", \"foo\" : \"baz\" }";
作为补充,您可以使用以下代码检查重复的键:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
objectMapper.readTree(json);
在出现重复键或其他错误时,它会抛出JsonProcessingException
异常。
使用Jackson时我使用这个函数:
public static boolean isValidJSON(final String json) throws IOException {
boolean valid = true;
try{
objectMapper.readTree(json);
} catch(JsonProcessingException e){
valid = false;
}
return valid;
}
System.out.println(isValidJSON("{\"foo\":\"bar\"}"));
,并且它正常工作,返回了 true
。请再试一次。 - madxisValidJSON("{\"foo\":\"bar\"}foo")
会失败,因为在有效的 JSON 后面有额外的内容。添加 mapper.enable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS);
来捕获这种情况。 - mc20private boolean isValidJson(String json) {
try {
objectMapper.readTree(json);
} catch (JsonProcessingException e) {
return false;
}
return true;
}
public static boolean isValidJSON(final String json) throws IOException {
boolean valid = true;
try{
mapper.enable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS);
mapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
objectMapper.readTree(json);
} catch(JsonProcessingException e){
valid = false;
}
return valid;
}
objectMapper.readTree(json);
中有一个打字错误,应该是mapper.readTree(json);
。 - LHCHINpublic Optional<JsonProcessingException> validateJson(final String json) {
try{
objectMapper.readTree(json);
return Optional.empty();
} catch(JsonProcessingException e){
return Optional.of(e);
} catch(IOException e) {
throw new RuntimeException(e);
}
}
jsonHelper.validateJson(mappingData.getMetadataJson())
.map(e -> String.format("Error: %s at %s", e.getMessage(), e.getLocation().toString()))
.orElse("Valid JSON");