From bbc38adbf6694d76d26f5ad1f2f1da043327a957 Mon Sep 17 00:00:00 2001 From: yoganandhank Date: Mon, 2 Jun 2025 18:48:09 +0530 Subject: [PATCH] json validation for empty spaces --- .../gcc/crslogs/controller/ApiController.java | 1 + .../service/BirthAndDeathDetailsService.java | 29 +++++++++++++++++-- .../modules/crslogspages/birthanddeath.html | 4 +++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gcc/crslogs/controller/ApiController.java b/src/main/java/com/gcc/crslogs/controller/ApiController.java index bbcecbe..f3588f1 100644 --- a/src/main/java/com/gcc/crslogs/controller/ApiController.java +++ b/src/main/java/com/gcc/crslogs/controller/ApiController.java @@ -1,6 +1,7 @@ package com.gcc.crslogs.controller; import java.net.URLEncoder; + import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/com/gcc/crslogs/service/BirthAndDeathDetailsService.java b/src/main/java/com/gcc/crslogs/service/BirthAndDeathDetailsService.java index 50cc787..26f9cc9 100644 --- a/src/main/java/com/gcc/crslogs/service/BirthAndDeathDetailsService.java +++ b/src/main/java/com/gcc/crslogs/service/BirthAndDeathDetailsService.java @@ -36,6 +36,10 @@ public class BirthAndDeathDetailsService { this.restTemplate = builder.build(); } + + + + public Map fetchBirthCertificate(String dob, String sex, String regno, String childName, String fatherName, String motherName) throws Exception { Map params = new LinkedHashMap(); // keep order params.put("regno", regno != null ? regno : ""); @@ -61,10 +65,14 @@ public class BirthAndDeathDetailsService { RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.exchange(BirthCertificateapiUrl, HttpMethod.GET, entity, String.class); + + String rawJson = response.getBody(); + String cleanJson = sanitizeJsonResponse(rawJson); - //System.out.println("✅ API Raw Response: " + response.getBody()); + + //System.out.println("✅ API Raw Response: " + cleanJson); - return mapper.readValue(response.getBody(), new TypeReference>() {}); + return mapper.readValue(cleanJson, new TypeReference>() {}); } @@ -101,10 +109,25 @@ public class BirthAndDeathDetailsService { ResponseEntity response = restTemplate.exchange(DeathCertificateapiUrl, HttpMethod.GET, entity, String.class); //System.out.println("✅ API Raw Response: " + response.getBody()); + String rawJson = response.getBody(); + String cleanJson = sanitizeJsonResponse(rawJson); - return mapper.readValue(response.getBody(), new TypeReference>() {}); + return mapper.readValue(cleanJson, new TypeReference>() {}); } + private String sanitizeJsonResponse(String rawJson) { + if (rawJson == null) return ""; + + // Remove illegal control characters (but keep line breaks if needed) + return rawJson + .replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "") // Remove non-printable control characters (except tabs/newlines) + .replaceAll("\t", "") // Remove tab characters explicitly (common cause of error) + .replaceAll("\\s*:\\s*\n\\s*\"", ":\"") // Fix broken key-value splits + .replaceAll("\r", "") // Remove carriage return if any + .replaceAll("\n", ""); // Optionally remove newlines if JSON is malformed across lines + } + + diff --git a/src/main/resources/templates/modules/crslogspages/birthanddeath.html b/src/main/resources/templates/modules/crslogspages/birthanddeath.html index 489d9c5..5740c0d 100644 --- a/src/main/resources/templates/modules/crslogspages/birthanddeath.html +++ b/src/main/resources/templates/modules/crslogspages/birthanddeath.html @@ -969,6 +969,7 @@ document.addEventListener("DOMContentLoaded", function () { function fetchBirthData() { + const dob = document.getElementById('dateofbirth').value; const gender = document.querySelector('input[name="gender"]:checked')?.value; const captchaInput = document.getElementById('birth-captcha-input'); @@ -1019,7 +1020,10 @@ $.ajax({ success: function (response) { $('#pageLoader').hide(); + if (response && response.BIRTH && response.BIRTH.length > 0) { + + console.log("birthdetails:",response); let html = `