extractJson method

Map<String, dynamic>? extractJson([
  1. String separator = ''
])

Extract and decode json from a string

Implementation

Map<String, dynamic>? extractJson([String separator = '']) {
  final index = indexOf(separator) + separator.length;
  if (index > length) {
    return null;
  }

  final str = substring(index);

  final startIdx = str.indexOf('{');
  var endIdx = str.lastIndexOf('}');

  while (true) {
    try {
      return json.decode(str.substring(startIdx, endIdx + 1))
          as Map<String, dynamic>;

      //final now = DateTime.now();
      //_log(str.substring(startIdx, endIdx + 1),
      //    '${now.minute}.${now.second}.${now.millisecond}-DECODE');
      //return value;
    } on FormatException {
      endIdx = str.lastIndexOf(str.substring(0, endIdx));
      if (endIdx == 0) {
        return null;
      }
    }
  }
}