Необработанное исключение: Исключение FormatException: Неожиданный символ при использовании json.decode в flutter

#json #flutter #dart #decode

Вопрос:

Вот строка, которую я пытаюсь перебрать, поэтому я попытался преобразовать ее в JSON.

 {to_address_mobile: [The to address mobile field is required.], to_address_area_number_id: [The to address area number id field is required.]}
 

и вот как я пытался это сделать :

           for (var validationError in json.decode('[${resp['data']}]')){
            print(validationError);
          }
 

Каждый раз, когда я получаю эту ошибку :

 E/flutter (22342): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FormatException: Unexpected character (at character 3)
E/flutter (22342): [{to_address_mobile: [The to address mobile field is required.], to_address...
 

Комментарии:

1. Вы пробовали заключать свои ключи в кавычки? to_address_mobile --> "to_address_mobile" (также ваши текстовые значения)

2. Я не могу получить доступ к исходной строке. Я должен справиться с этим вот так !! как-нибудь по-другому?

3. Я думаю, вам нужно разобрать это самостоятельно, но, может быть, у кого-то есть идея получше.

4. Если вы всегда получаете данные такого типа, вы можете легко написать для них шаблон регулярного выражения

5. анализируя его, чтобы добавить «» для каждого ключа и значения. Я не могу понять, какой шаблон я могу использовать, чтобы убедиться, что я ничего не пропустил

Ответ №1:

Я написал шаблон регулярного выражения, чтобы извлечь информацию из вашей строки. Извините, если это не совсем оптимально, но я никогда на самом деле не работаю с регулярными выражениями:

 (?<key>[^:{[] ]*):[ ]*[(?<value>[^:{[]]*)]
 

Отдельные совпадения являются парами ключ-значение, ключи находятся в именованной группе «ключ», а значения-в именованной группе «значение».