dart:convert
Aprende sobre las características principales de la biblioteca dart:convert de Dart.
La biblioteca dart:convert (referencia de la API) tiene convertidores para JSON y UTF-8, así como soporte para crear convertidores adicionales. JSON es un formato de texto simple para representar colecciones y objetos estructurados. UTF-8 es una codificación común de ancho variable que puede representar cada carácter del conjunto de caracteres Unicode.
Para usar esta biblioteca, importa dart:convert.
import 'dart:convert';
Decodificar y codificar JSON
#Decodifica una cadena codificada en JSON en un objeto de Dart con 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);
Codifica un objeto compatible de Dart en una cadena con formato JSON con
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}]',
);
Solo los objetos de tipo int, double, String, bool, null, List o Map (con claves de tipo string) son directamente codificables en JSON. Los objetos List y Map se codifican de forma recursiva.
Tienes dos opciones para codificar objetos que no son directamente
codificables. La primera es invocar jsonEncode() con un segundo argumento: una
función que devuelve un objeto que sea directamente codificable. Tu segunda
opción es omitir el segundo argumento, en cuyo caso el codificador llama
al método toJson() del objeto.
Para más ejemplos y enlaces a paquetes relacionados con JSON, consulta Uso de JSON.
Decodificar y codificar caracteres UTF-8
#Usa utf8.decode() para decodificar bytes codificados en UTF8 en una cadena de 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 convertir un stream de caracteres UTF-8 en una cadena de Dart, especifica
utf8.decoder en el método transform() de 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);
}
Usa utf8.encode() para codificar una cadena de Dart como una lista de bytes codificados en UTF8:
Uint8List encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ');
assert(encoded.length == utf8Bytes.length);
for (int i = 0; i < encoded.length; i++) {
assert(encoded[i] == utf8Bytes[i]);
}
Otras funcionalidades
#La biblioteca dart:convert también tiene convertidores para ASCII e ISO-8859-1 (Latin1). Para más detalles, consulta la referencia de la API para la biblioteca dart:convert.
A menos que se indique lo contrario, la documentación de este sitio refleja Dart 3.12.2. Página actualizada por última vez el 12-02-2025. Ver fuente oreportar un problema.