Regex.findAll где-то застревает, когда передается вложенный текст json и никогда не возвращается ответAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Regex.findAll где-то застревает, когда передается вложенный текст json и никогда не возвращается ответ

Сообщение Anonymous »

Я пытаюсь найти все шаблоны/исправления json в строке, если они существуют. Для этого я использую val regex = "\\{(?:[^{}]*|\\{[^{}]*\\})*\\}".toRegex(). Он отлично работает для простых json или вложенных до двух шагов json. Но если json состоит из трех вложенных шагов, то regex.findAll(row) никогда ничего не возвращает и даже не выдает исключение и не блокирует, наконец, если я помещаю его в try/catch. Пример метода, вызывающего проблему:

Код: Выделить всё

private fun testRegex() {
lifecycleScope.launch(ioDispatcher) {
try {
val text =
"{\"message\":\"Bad Gateway\",\"code\":502,\"errors\":[{\"message\":\"Failed to get configuration of type: ae.network.transaction.domain.config.FeatureToggleResponse\",\"localizedMessage\":\"{error.processing.configFetchError}\",\"errorCode\":\"configFetchError\",\"domain\":\"processing\"}]}"
val regex = "\\{(?:[^{}]*|\\{[^{}]*\\})*\\}".toRegex()
val jsonMatches = regex.findAll(text)
Log.d("json_matches", "jsonMatches= ${jsonMatches.count()}")
} catch (e: Exception) {
Log.d("json_matches", "exception: Never comes here")
} finally {
Log.d("json_matches", "finally: Never comes here")
}
}
}
Я хочу, по крайней мере, создать какое-нибудь исключение, чтобы мы могли обработать его другим способом. Но похоже, что это происходит в бесконечном процессе, потому что для такого текста, наконец, тоже недостижимо. Любые идеи будут признательны.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... ssed-and-n
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»