Librería dart:convert

Conoce las funciones principales de la librería Dart dart:convert. Esta librería ofrece convertidores para JSON y UTF-8, y también admite convertidores personalizados.

JSON: Formato de texto ligero usado para representar objetos y colecciones estructuradas.

UTF-8: Codificación de ancho variable capaz de representar todos los caracteres del conjunto Unicode.

import 'dart:convert';Lenguaje del código: JavaScript (javascript)

Codificación y decodificación JSON

jsonDecode(): Cadena JSON → Objeto Dart

Decodifica una cadena con formato JSON a un objeto Dart.

Aviso: Dentro de las cadenas JSON debes usar comillas dobles "; no se permiten comillas simples '. Este texto es JSON, no código Dart.

import 'dart:convert';

void main() {
	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);
}Lenguaje del código: Dart (dart)

jsonEncode(): Objeto Dart → Cadena JSON

Codifica objetos Dart serializables en una cadena JSON:

import 'dart:convert';

void main() {
	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}]',
	);
}Lenguaje del código: Dart (dart)

Tipos soportados directamente por JSON

Solo los siguientes tipos pueden codificarse directamente a JSON:

int, double, String, bool, null, List, Map con claves de tipo String

List y Map codifican sus elementos internos de forma recursiva.

Codificación y decodificación de caracteres UTF-8

utf8.decode(): Matriz de bytes UTF-8 → Cadena Dart

import 'dart:convert';

void main() {
	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ñåţîöñåļîžåţîờñ');
}Lenguaje del código: Dart (dart)

Decodificación UTF-8 en flujo (para archivos / flujos de red)

Emplea utf8.decoder junto con Stream.transform(). Combínalo con LineSplitter para leer línea a línea:

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);
}Lenguaje del código: Dart (dart)

utf8.encode(): Cadena → Matriz de bytes UTF-8 (Uint8List)

Uint8List encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ');

assert(encoded.length == utf8Bytes.length);
for (int i = 0; i < encoded.length; i++) {
  assert(encoded[i] == utf8Bytes[i]);
}Lenguaje del código: Dart (dart)

Librería dart:convert

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *