normalizeJson method

String normalizeJson(
  1. String jsonStr
)

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;
  }
}