isBalancedJson static method

bool isBalancedJson(
  1. String str
)

Fast check for balanced braces without full JSON parsing.

Implementation

static bool isBalancedJson(String str) {
  int braceCount = 0;
  bool inString = false;
  bool escaped = false;
  bool hasSeenOpenBrace = false;

  for (int i = 0; i < str.length; i++) {
    final char = str[i];

    if (escaped) {
      escaped = false;
      continue;
    }

    if (char == '\\') {
      escaped = true;
      continue;
    }

    if (char == '"') {
      inString = !inString;
      continue;
    }

    if (!inString) {
      if (char == '{') {
        braceCount++;
        hasSeenOpenBrace = true;
      } else if (char == '}') {
        braceCount--;
        if (braceCount < 0) return false;
      }
    }
  }

  return braceCount == 0 && hasSeenOpenBrace;
}