dart:convert
Aprenda sobre as principais funcionalidades da biblioteca dart:convert do Dart.
A biblioteca dart:convert (referência da API) possui conversores para JSON e UTF-8, além de suporte para criação de conversores adicionais. JSON é um formato de texto simples para representar objetos e coleções estruturados. UTF-8 é uma codificação comum de largura variável que pode representar todos os caracteres do conjunto de caracteres Unicode.
Para usar esta biblioteca, importe dart:convert.
import 'dart:convert';
Decodificando e codificando JSON
#Decodifique uma string codificada em JSON para um objeto Dart com jsonDecode():
// NOTE: Be sure to use double quotes ("),
// not single quotes ('), inside the JSON string.
// This string is JSON, not Dart.
var jsonString = '''
[
{"score": 40},
{"score": 80}
]
''';
var scores = jsonDecode(jsonString);
assert(scores is List);
var firstScore = scores[0];
assert(firstScore is Map);
assert(firstScore['score'] == 40);
Codifique um objeto Dart suportado em uma string formatada em JSON com
jsonEncode():
var scores = [
{'score': 40},
{'score': 80},
{'score': 100, 'overtime': true, 'special_guest': null},
];
var jsonText = jsonEncode(scores);
assert(
jsonText ==
'[{"score":40},{"score":80},'
'{"score":100,"overtime":true,'
'"special_guest":null}]',
);
Apenas objetos do tipo int, double, String, bool, null, List ou Map (com chaves string) são diretamente codificáveis em JSON. Objetos List e Map são codificados recursivamente.
Você tem duas opções para codificar objetos que não são diretamente
codificáveis. A primeira é invocar jsonEncode() com um segundo argumento: uma
função que retorna um objeto que é diretamente codificável. Sua segunda
opção é omitir o segundo argumento, caso em que o codificador chama
o método toJson() do objeto.
Para mais exemplos e links para pacotes relacionados a JSON, veja Usando JSON.
Decodificando e codificando caracteres UTF-8
#Use utf8.decode() para decodificar bytes codificados em UTF8 para uma string Dart:
List<int> utf8Bytes = [
0xc3, 0x8e, 0xc3, 0xb1, 0xc5, 0xa3, 0xc3, 0xa9,
0x72, 0xc3, 0xb1, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3,
0xae, 0xc3, 0xb6, 0xc3, 0xb1, 0xc3, 0xa5, 0xc4,
0xbc, 0xc3, 0xae, 0xc5, 0xbe, 0xc3, 0xa5, 0xc5,
0xa3, 0xc3, 0xae, 0xe1, 0xbb, 0x9d, 0xc3, 0xb1,
];
var funnyWord = utf8.decode(utf8Bytes);
assert(funnyWord == 'Îñţérñåţîöñåļîžåţîờñ');
Para converter um stream de caracteres UTF-8 em uma string Dart, especifique
utf8.decoder para o método transform() do Stream:
var lines = utf8.decoder.bind(inputStream).transform(const LineSplitter());
try {
await for (final line in lines) {
print('Got ${line.length} characters from stream');
}
print('file is now closed');
} catch (e) {
print(e);
}
Use utf8.encode() para codificar uma string Dart como uma lista de bytes codificados em UTF8:
Uint8List encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ');
assert(encoded.length == utf8Bytes.length);
for (int i = 0; i < encoded.length; i++) {
assert(encoded[i] == utf8Bytes[i]);
}
Outras funcionalidades
#A biblioteca dart:convert também possui conversores para ASCII e ISO-8859-1 (Latin1). Para mais detalhes, veja a referência da API para a biblioteca dart:convert.
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Página atualizada pela última vez em 2026-11-12. Ver código-fonte ou relatar um problema.
Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.