Tôi đang cố gắng sử dụng JSON JSON lấy một chuỗi và xác định xem đó có phải là JSON hợp lệ hay không. Bất cứ ai có thể đề nghị một mẫu mã để sử dụng (Java)?Cách xác thực JSON bằng JSON JSON
Trả lời
Không chắc gì trường hợp sử dụng của bạn cho điều này là, nhưng điều này nên làm điều đó:
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;
}
getJsonFactory() không được chấp nhận. – Arash
Giải pháp ngắn và thanh lịch có sẵn tại đây [Cảm ơn @pdem] (http://stackoverflow.com/a/29414638/452708) 'try { ObjectMapper objectMapper = ...; JsonNode jsonNode = objectMapper.readTree (yourJsonString); } bắt (JsonProcessingException e) {........} ' – Abhijeet
cả hai phương pháp đều bị khấu hao: getJsonFactory(). CreateJsonParser (json). Sử dụng istead này: getFactory(). CreateParser (json) – kiedysktos
tôi sẽ khuyên bạn sử dụng Bean Validation API riêng: đó là, dữ liệu ràng buộc đầu tiên vào một POJO, sau đó xác POJO. Các lược đồ mức định dạng dữ liệu theo ý kiến của tôi không phải là rất hữu ích: người ta thường vẫn phải xác nhận các mối quan tâm mức cao hơn, và các ngôn ngữ lược đồ chính là vụng về, đặc biệt. những người sử dụng định dạng được xác nhận hợp lệ (Lược đồ XML và Lược đồ JSON đều có lỗ hổng cơ bản này). Làm điều này làm cho mã có nhiều mô-đun hơn, có thể sử dụng lại và phân tách các mối quan tâm (tuần tự hóa, xác thực dữ liệu).
Nhưng tôi thực sự sẽ tiến xa hơn một bước và đề xuất bạn xem DropWizard - nó tích hợp triển khai API và xác thực API (từ dự án Hibernate).
Dropwizard dường như đã chuyển sang một ngôi nhà mới (www.dropwizard.io) và tự gọi mình là "một khung công tác Java để phát triển web thân thiện, hiệu năng cao, RESTful dịch vụ ".Chưa đọc nhưng nó vẫn có thể tích hợp API của Jackson và Validation. Không chắc chắn nếu bạn cần tất cả phần còn lại. – Wivani
Có, DropWizard vẫn tích hợp API của Jackson và Validation kể từ bây giờ (feb 2016). Tôi không thấy những thay đổi cho dự án, nó khá trưởng thành vào thời điểm này. Tất nhiên bạn có thể sử dụng các thư viện liên kết khác (JAX-RS có khả năng cắm được cao), nhưng như là đường cơ sở, 2 libs này có thể vẫn còn. – StaxMan
Mặc dù câu trả lời Perception của lẽ sẽ phù hợp với nhiều nhu cầu, có một số vấn đề nó sẽ không nắm bắt, một trong số họ là chìa khóa trùng lặp, hãy xem xét ví dụ sau:
String json = "{ \"foo\" : \"bar\", \"foo\" : \"baz\" }";
Như một sự bổ sung, bạn có thể kiểm tra các khóa trùng lặp có mã sau:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
objectMapper.readTree(json);
Nó ném JsonProcessingException
trên khóa trùng lặp hoặc lỗi khác.
Với Jackson Tôi sử dụng chức năng này:
public static boolean isValidJSON(final String json) throws IOException {
boolean valid = true;
try{
objectMapper.readTree(json);
} catch(JsonProcessingException e){
valid = false;
}
return valid;
}
tùy chọn khác sẽ được sử dụng java.util.Optional trong Java 8. Điều này cho phép để trả lại một đối tượng và sử dụng trong đoạn code gọi một cách tiếp cận chức năng hơn.
Đây là một thực thể:
public 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);
}
}
Sau đó, bạn có thể sử dụng phương pháp này như sau:
jsonHelper.validateJson(mappingData.getMetadataJson())
.map(e -> String.format("Error: %s at %s", e.getMessage(), e.getLocation().toString()))
.orElse("Valid JSON");
- 1. Xác thực lược đồ JSON bằng cách sử dụng java
- 2. Xác thực lỗi xác thực thông qua json gửi lại html thay vì json
- 3. Cách phát hiện đối tượng JSON/JSON Array trên XCode bằng cách sử dụng JSON-Framework
- 4. Xác thực lược đồ JSON với PHP
- 5. JSON JSON NSString Parse
- 6. Cách tạo json bằng php?
- 7. Tuần tự hóa JSON JSON - thực hành tốt nhất
- 8. Biến đổi JSON thành JSON
- 9. JSON có quá nhiều JSON?
- 10. JSON bằng Flex. "Truy cập thuộc tính không xác định JSON"
- 11. Xử lý JSON $ .post Phản hồi JSON
- 12. Cách tạo json api
- 13. JSON tải/đổ bằng Python
- 14. Cách đọc tệp JSON bằng Dojo
- 15. Cách tạo tệp .json bằng PHP?
- 16. Đang tải JSON bằng PHP
- 17. Hiệu suất giải mã JSON JSON
- 18. Truy vấn JSON bằng LINQ
- 19. Json - Đối tượng Java với Json
- 20. Android - Bài đăng JSONClient JSON có xác thực cơ bản
- 21. JSON khác với dữ liệu JSON lớn, tìm một số JSON dưới dạng tập hợp con của một JSON khác
- 22. Chuyển đổi đối tượng tùy chỉnh sang JSON bằng cách sử dụng đá quý JSON
- 23. Làm cách nào để xác thực biểu mẫu bằng JSON Schema?
- 24. Xác thực lược đồ JSON với các khóa tùy ý
- 25. Sử dụng trình phân tích cú pháp JSON JSON: JSON phức tạp?
- 26. Cách in dữ liệu json.
- 27. Chuyển đổi XML sang JSON bằng R
- 28. cách thêm json thư viện
- 29. Phân loại đầu ra JSON bằng Python
- 30. Viết cho Rails bằng JSON API
Làm thế nào để bạn defina rằng JSON là hợp lệ? – Slavus
@Slavus: Bất kỳ chuỗi nào đáp ứng tiêu chuẩn cú pháp JSON là JSON hợp lệ. Chúng tôi không xác định JSON hợp lệ. – Vivek
Tôi trễ năm và điều này có thể không có sẵn trong năm 2012, nhưng bạn có nghĩ đến [lược đồ JSON] (http://json-schema.org/) không? – Stroboskop