From 0c24096c803ccfbe4d3e250c4e9295a1f028bce2 Mon Sep 17 00:00:00 2001 From: Tuan Nghia Nguyen Date: Mon, 30 Mar 2026 22:50:07 +1100 Subject: [PATCH] Support return Unicode escapes --- modules/ANSFR/ANSFR.cpp | 4 ++-- modules/ANSLPR/ANSLPR.cpp | 2 +- modules/ANSOCR/ANSOCRBase.cpp | 9 +++++---- modules/ANSODEngine/ANSEngineCommon.cpp | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/ANSFR/ANSFR.cpp b/modules/ANSFR/ANSFR.cpp index 5ba1719..682a45c 100644 --- a/modules/ANSFR/ANSFR.cpp +++ b/modules/ANSFR/ANSFR.cpp @@ -2379,7 +2379,7 @@ namespace ANSCENTER { END_TIMER(json_build, "JSON Build Time"); START_TIMER(json_serialize); - std::string result = root.dump(); + std::string result = root.dump(-1, ' ', true); END_TIMER(json_serialize, "JSON Serialize Time"); END_TIMER(json_total, "JSON Conversion Total Time"); @@ -2416,7 +2416,7 @@ namespace ANSCENTER { root["results"] = detectedObjects; - return root.dump(); // or root.dump(4) for pretty-printed JSON with 4-space indent + return root.dump(-1, ' ', true); } // Validation helper methods diff --git a/modules/ANSLPR/ANSLPR.cpp b/modules/ANSLPR/ANSLPR.cpp index 6c807fc..e7aacaa 100644 --- a/modules/ANSLPR/ANSLPR.cpp +++ b/modules/ANSLPR/ANSLPR.cpp @@ -434,7 +434,7 @@ namespace ANSCENTER { {"kps", KeypointsToString(det.kps)} }); } - return root.dump(); + return root.dump(-1, ' ', true); } catch (const std::exception& e) { this->_logger.LogFatal("ANSALPR::VectorDetectionToJsonString", e.what(), __FILE__, __LINE__); diff --git a/modules/ANSOCR/ANSOCRBase.cpp b/modules/ANSOCR/ANSOCRBase.cpp index a98a38d..0a5848f 100644 --- a/modules/ANSOCR/ANSOCRBase.cpp +++ b/modules/ANSOCR/ANSOCRBase.cpp @@ -197,7 +197,7 @@ namespace ANSCENTER { {"y", std::to_string(det.box.y)}, {"width", std::to_string(det.box.width)}, {"height", std::to_string(det.box.height)}, - {"mask", ""}, // TODO: convert masks to comma separated string + {"mask", ""}, {"extra_info", det.extraInfo}, {"camera_id", det.cameraId}, {"polygon", PolygonToString(det.polygon)}, @@ -205,7 +205,8 @@ namespace ANSCENTER { }); } - return root.dump(); + // ensure_ascii=true escapes non-ASCII chars as \uXXXX for LabVIEW compatibility + return root.dump(-1, ' ', true); } catch (const std::exception& e) { // Add your error logging here if needed @@ -839,7 +840,7 @@ namespace ANSCENTER { for (const auto& part : res.parts) { alprInfo[part.first] = part.second; } - std::string extraInfoStr = alprInfo.dump(); + std::string extraInfoStr = alprInfo.dump(-1, ' ', true); // Use the same field layout as OCRDetectionToJsonString jsonResults.push_back({ @@ -858,7 +859,7 @@ namespace ANSCENTER { {"kps", ""} }); } - return root.dump(); + return root.dump(-1, ' ', true); } catch (const std::exception&) { return R"({"results":[],"error":"ALPR serialization failed"})"; } diff --git a/modules/ANSODEngine/ANSEngineCommon.cpp b/modules/ANSODEngine/ANSEngineCommon.cpp index 76f06e3..cef4ff3 100644 --- a/modules/ANSODEngine/ANSEngineCommon.cpp +++ b/modules/ANSODEngine/ANSEngineCommon.cpp @@ -1104,10 +1104,10 @@ namespace ANSCENTER { {"kps", KeypointsToString(det.kps)} }); } - return root.dump(); + // ensure_ascii=true escapes non-ASCII chars as \uXXXX for LabVIEW compatibility + return root.dump(-1, ' ', true); } catch (const std::exception& e) { - // Add your error logging here if needed return R"({"results":[],"error":"Serialization failed"})"; } }