Библиотека dart:convert
Кодировщики и декодировщики для преобразования между различными представлениями данных, включая JSON и UTF-8.
В дополнение к преобразователям для распространённых представлений данных, эта библиотека предоставляет поддержку реализации преобразователей таким образом, чтобы их было легко объединять в цепочки и использовать со потоками.
Для использования этой библиотеки в вашем коде:
import 'dart:convert';
Два часто используемых преобразователя — это экземпляры верхнего уровня JsonCodec и Utf8Codec, имеющие имена json и utf8 соответственно.
JSON
JSON — это простой текстовый формат для представления структурированных объектов и коллекций.
Класс JsonCodec кодирует объекты JSON в строки и декодирует строки в объекты JSON. Кодировщик/декодировщик json преобразует между строками и структурами объектов, такими как списки и карты, используя формат JSON.
Класс json — это реализация по умолчанию класса JsonCodec.
Примеры
var encoded = json.encode([1, 2, { "a": null }]);
var decoded = json.decode('["foo", { "bar": 499 }]'); Для получения дополнительной информации, см. также JsonEncoder и JsonDecoder.
UTF-8
Класс Utf8Codec кодирует строки в единицы кода UTF-8 (байты) и декодирует единицы кода UTF-8 в строки.
Класс utf8 — это реализация по умолчанию класса Utf8Codec.
Пример:
var encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ');
var decoded = utf8.decode([
195, 142, 195, 177, 197, 163, 195, 169, 114, 195, 177, 195, 165, 197,
163, 195, 174, 195, 182, 195, 177, 195, 165, 196, 188, 195, 174, 197,
190, 195, 165, 197, 163, 195, 174, 225, 187, 157, 195, 177]); Для получения дополнительной информации, см. также Utf8Encoder и Utf8Decoder.
ASCII
Класс AsciiCodec кодирует строки как ASCII-коды, хранящиеся в виде байтов, и декодирует ASCII-байты в строки. Не все символы могут быть представлены в ASCII, поэтому не все строки могут быть успешно преобразованы.
Класс ascii — это реализация по умолчанию класса AsciiCodec.
Пример:
var encoded = ascii.encode('This is ASCII!');
var decoded = ascii.decode([0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x21]); Для получения дополнительной информации, см. также AsciiEncoder и AsciiDecoder.
Latin-1
Класс Latin1Codec кодирует строки в байты ISO Latin-1 (также известный как ISO-8859-1) и декодирует байты Latin-1 в строки. Не все символы могут быть представлены в Latin-1, поэтому не все строки могут быть успешно преобразованы.
Класс latin1 — это реализация по умолчанию класса Latin1Codec.
Пример:
var encoded = latin1.encode('blåbærgrød');
var decoded = latin1.decode([0x62, 0x6c, 0xe5, 0x62, 0xe6,
0x72, 0x67, 0x72, 0xf8, 0x64]); Для получения дополнительной информации, см. также Latin1Encoder и Latin1Decoder.
Base64
Класс Base64Codec кодирует байты, используя стандартный алфавит base64, декодирует используя алфавиты base64 и base64url, не допускает недопустимых символов и требует заполнения.
Класс base64 — это реализация по умолчанию класса Base64Codec.
Пример:
var encoded = base64.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
var decoded = base64.decode('YmzDpWLDpnJncsO4ZAo='); Для получения дополнительной информации, см. также Base64Encoder и Base64Decoder.
Преобразователи
Преобразователи часто используются с потоками для преобразования данных, которые поступают через поток по мере их доступности. Следующий код использует два преобразователя. Первый — это декодер UTF-8, который преобразует данные из байтов в UTF-8 по мере чтения из файла. Второй — экземпляр класса LineSplitter, который разделяет данные по границам строк.
const showLineNumbers = true;
var lineNumber = 1;
var stream = File('quotes.txt').openRead();
stream.transform(utf8.decoder)
.transform(const LineSplitter())
.forEach((line) {
if (showLineNumbers) {
stdout.write('${lineNumber++} ');
}
stdout.writeln(line);
}); См. документацию по классам Codec и Converter для получения информации о создании собственных преобразователей.
HTML Escape
Преобразователь HtmlEscape экранирует символы со специальным значением в HTML. Преобразователь находит символы, имеющие важное значение в исходном коде HTML, и заменяет их соответствующими HTML-сущностями.
Настраиваемые режимы экранирования можно создавать с помощью конструктора HtmlEscapeMode.HtmlEscapeMode.
Пример:
const htmlEscapeMode = HtmlEscapeMode( name: 'custom', escapeLtGt: true, escapeQuot: false, escapeApos: false, escapeSlash: false, ); const HtmlEscape htmlEscape = HtmlEscape(htmlEscapeMode); String unescaped = 'Text & subject'; String escaped = htmlEscape.convert(unescaped); print(escaped); // Text & subject unescaped = '10 > 1 and 1 < 10'; escaped = htmlEscape.convert(unescaped); print(escaped); // 10 > 1 and 1 < 10 unescaped = "Single-quoted: 'text'"; escaped = htmlEscape.convert(unescaped); print(escaped); // Single-quoted: 'text' unescaped = 'Double-quoted: "text"'; escaped = htmlEscape.convert(unescaped); print(escaped); // Double-quoted: "text" unescaped = 'Path: /system/'; escaped = htmlEscape.convert(unescaped); print(escaped); // Path: /system/
Классы
- AsciiCodec
- Класс AsciiCodec позволяет кодировать строки в ASCII-байты и декодировать ASCII-байты в строки.
- AsciiDecoder
- Преобразует ASCII-байты в строку.
- AsciiEncoder
- Преобразует строки, содержащие только ASCII-символы, в байты.
- Base64Codec
- Кодировщик и декодер base64.
- Base64Decoder
- Декодер для данных, закодированных в base64.
- Base64Encoder
- Преобразователь кодирования base64 и base64url.
- ByteConversionSink
- ByteConversionSink предоставляет интерфейс для преобразователей, чтобы эффективно передавать данные байтов.
- ByteConversionSinkBase
- Этот класс предоставляет базовый класс для преобразователей, которым необходимо принимать байтовые входные данные.
- ChunkedConversionSink<
T> - ChunkedConversionSink используется для более эффективной передачи данных между двумя преобразователями во время поблочного преобразования.
- ClosableStringSink
- ClosableStringSink расширяет интерфейс StringSink, добавив метод
close. - Codec<
S, T> - Codec кодирует и (если поддерживается) декодирует данные.
- Converter<
S, T> - Converter преобразует данные из одного представления в другое.
- Encoding
- Открытый перечисление Encoding.
- HtmlEscape
- Преобразователь, который экранирует символы со специальным значением в HTML.
- HtmlEscapeMode
- Режимы экранирования HTML.
- JsonCodec
- JsonCodec кодирует объекты JSON в строки и декодирует строки в объекты JSON.
- JsonDecoder
- Этот класс анализирует JSON-строки и создаёт соответствующие объекты.
- JsonEncoder
- Этот класс преобразует JSON-объекты в строки.
- JsonUtf8Encoder
- Кодировщик, который кодирует отдельный объект как UTF-8 закодированную JSON-строку.
- Latin1Codec
- Latin1Codec кодирует строки в байты ISO Latin-1 (также известный как ISO-8859-1) и декодирует байты Latin-1 в строки.
- Latin1Decoder
- Этот класс преобразует байты Latin-1 (списки беззнаковых 8-битных целых чисел) в строку.
- Latin1Encoder
- Этот класс преобразует строки, содержащие только символы ISO Latin-1, в байты.
- LineSplitter
- StreamTransformer, который разделяет строку на отдельные строки.
- StringConversionSink
- Этот класс предоставляет интерфейс для преобразователей, чтобы эффективно передавать данные String.
- StringConversionSinkBase
- Этот класс предоставляет базовый класс для преобразователей, которым необходимо принимать строковые входные данные.
- StringConversionSinkMixin
- Этот класс предоставляет миксин для преобразователей, которым необходимо принимать строковые входные данные.
- Utf8Codec
- Utf8Codec кодирует строки в единицы кода UTF-8 (байты) и декодирует единицы кода UTF-8 в строки.
- Utf8Decoder
- Этот класс преобразует единицы кода UTF-8 (списки беззнаковых 8-битных целых чисел) в строку.
- Utf8Encoder
- Этот класс преобразует строки в их единицы кода UTF-8 (список беззнаковых 8-битных целых чисел).
Константы
- ascii → const AsciiCodec
- Экземпляр реализации по умолчанию AsciiCodec.
- base64 → const Base64Codec
- Кодировщик и декодировщик base64.
- base64Url → const Base64Codec
- Кодировщик и декодировщик base64url.
Base64Codec.urlSafe() - htmlEscape → const HtmlEscape
- Преобразователь, который преобразует символы в HTML-сущности.
- json → const JsonCodec
- Экземпляр реализации по умолчанию JsonCodec.
- latin1 → const Latin1Codec
- Экземпляр реализации по умолчанию Latin1Codec.
- unicodeBomCharacterRune → const int
- Символ Unicode Byte Order Marker (BOM)
U+FEFF.0xFEFF - unicodeReplacementCharacterRune → const int
- Символ Unicode Replacement
U+FFFD(�).0xFFFD - utf8 → const Utf8Codec
- Экземпляр реализации по умолчанию Utf8Codec.
Функции
- base64Decode(
String source) → Uint8List - Декодирует закодированные в base64 или base64url байты.
- base64Encode(
List< int> bytes) → String - Кодирует
bytesс помощью кодирования base64. - base64UrlEncode(
List< int> bytes) → String - Кодирует
bytesс помощью кодирования base64url. - jsonDecode(
String source, {Object? reviver(Object? key, Object? value)?}) → dynamic - Парсит строку и возвращает результирующий объект Json.
- jsonEncode(
Object? object, {Object? toEncodable(Object? nonEncodable)?}) → String - Преобразует
objectв строку JSON.
Исключения/ошибки
- JsonCyclicError
- Сообщает, что объект не может быть преобразован в строку из-за циклических ссылок.
- JsonUnsupportedObjectError
- Ошибка, выброшенная сериализацией JSON, если объект не может быть сериализован.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-convert/dart-convert-library.html