normalizeJson method
Normalize JSON by adding quotes around unquoted keys using C++ implementation.
jsonStr Raw JSON possibly with unquoted keys
Returns normalized JSON string
Implementation
String normalizeJson(String jsonStr) {
try {
final normalizeFn = lib.lookupFunction<
Int32 Function(Pointer<Utf8>, Pointer<Pointer<Utf8>>),
int Function(Pointer<Utf8>, Pointer<Pointer<Utf8>>)>(
'rac_tool_call_normalize_json',
);
final racFreeFn = lib.lookupFunction<Void Function(Pointer<Void>),
void Function(Pointer<Void>)>('rac_free');
final inputPtr = jsonStr.toNativeUtf8();
final outputPtrPtr = calloc<Pointer<Utf8>>();
try {
final rc = normalizeFn(inputPtr, outputPtrPtr);
if (rc != RAC_SUCCESS || outputPtrPtr.value == nullptr) {
return jsonStr;
}
final result = outputPtrPtr.value.toDartString();
racFreeFn(outputPtrPtr.value.cast());
return result;
} finally {
calloc.free(inputPtr);
calloc.free(outputPtrPtr);
}
} catch (e) {
_logger.error('normalizeJson failed: $e');
return jsonStr;
}
}