dart:convert library Null safety
Encoders and decoders for converting between different data representations, including JSON and UTF-8.
In addition to converters for common data representations, this library provides support for implementing converters in a way which makes them easy to chain and to use with streams.
To use this library in your code:
import 'dart:convert';
Two commonly used converters are the top-level instances of JsonCodec and Utf8Codec, named json and utf8, respectively.
JSON is a simple text format for representing structured objects and collections. The JSON encoder/decoder transforms between strings and object structures, such as lists and maps, using the JSON format.
UTF-8 is a common variable-width encoding that can represent every character in the Unicode character set. The UTF-8 encoder/decoder transforms between Strings and bytes.
Converters are often used with streams to transform the data that comes through the stream as it becomes available. The following code uses two converters. The first is a UTF-8 decoder, which converts the data from bytes to UTF-8 as it's read from a file, The second is an instance of LineSplitter, which splits the data on newline boundaries.
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);
});
See the documentation for the Codec and Converter classes for information about creating your own converters.
Classes
- AsciiCodec
- An AsciiCodec allows encoding strings as ASCII bytes and decoding ASCII bytes to strings.
- AsciiDecoder
- Converts ASCII bytes to string. [...]
- AsciiEncoder
- Converts strings of only ASCII characters to bytes. [...]
- Base64Codec
- A base64 encoder and decoder. [...]
- Base64Decoder
- Decoder for base64 encoded data. [...]
- Base64Encoder
- Base64 and base64url encoding converter. [...]
- ByteConversionSink
- The ByteConversionSink provides an interface for converters to efficiently transmit byte data. [...]
- ByteConversionSinkBase
- This class provides a base-class for converters that need to accept byte inputs.
-
ChunkedConversionSink<
T> - A ChunkedConversionSink is used to transmit data more efficiently between two converters during chunked conversions. [...]
- ClosableStringSink
-
A ClosableStringSink extends the StringSink interface by adding a
close
method. -
Codec<
S, T> - A Codec encodes and (if supported) decodes data. [...]
-
Converter<
S, T> - A Converter converts data from one representation into another. [...]
- Encoding
- Open-ended Encoding enum.
- HtmlEscape
- Converter which escapes characters with special meaning in HTML. [...]
- HtmlEscapeMode
- HTML escape modes. [...]
- JsonCodec
- A JsonCodec encodes JSON objects to strings and decodes strings to JSON objects. [...]
- JsonDecoder
- This class parses JSON strings and builds the corresponding objects. [...]
- JsonEncoder
- This class converts JSON objects to strings. [...]
- JsonUtf8Encoder
- Encoder that encodes a single object as a UTF-8 encoded JSON string. [...]
- Latin1Codec
- A Latin1Codec encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes and decodes Latin-1 bytes to strings.
- Latin1Decoder
- This class converts Latin-1 bytes (lists of unsigned 8-bit integers) to a string. [...]
- Latin1Encoder
- This class converts strings of only ISO Latin-1 characters to bytes. [...]
- LineSplitter
- A StreamTransformer that splits a String into individual lines. [...]
- StringConversionSink
- This class provides an interface for converters to efficiently transmit String data. [...]
- StringConversionSinkBase
- This class provides a base-class for converters that need to accept String inputs.
- StringConversionSinkMixin
- This class provides a mixin for converters that need to accept String inputs.
- Utf8Codec
- A Utf8Codec encodes strings to utf-8 code units (bytes) and decodes UTF-8 code units to strings.
- Utf8Decoder
- This class converts UTF-8 code units (lists of unsigned 8-bit integers) to a string. [...]
- Utf8Encoder
- This class converts strings to their UTF-8 code units (a list of unsigned 8-bit integers). [...]
Constants
- ascii → const AsciiCodec
- An instance of the default implementation of the AsciiCodec. [...]
- base64 → const Base64Codec
- A base64 encoder and decoder. [...]
- base64Url → const Base64Codec
-
A base64url encoder and decoder. [...]
Base64Codec.urlSafe()
- htmlEscape → const HtmlEscape
-
A
String
converter that converts characters to HTML entities. [...] - json → const JsonCodec
- An instance of the default implementation of the JsonCodec. [...]
- latin1 → const Latin1Codec
- An instance of the default implementation of the Latin1Codec. [...]
- unicodeBomCharacterRune → const int
-
The Unicode Byte Order Marker (BOM) character
U+FEFF
.0xFEFF
- unicodeReplacementCharacterRune → const int
-
The Unicode Replacement character
U+FFFD
(�).0xFFFD
- utf8 → const Utf8Codec
- An instance of the default implementation of the Utf8Codec. [...]
Functions
-
base64Decode(
String source) → Uint8List - Decodes base64 or base64url encoded bytes. [...]
-
base64Encode(
List< int> bytes) → String -
Encodes
bytes
using base64 encoding. [...] -
base64UrlEncode(
List< int> bytes) → String -
Encodes
bytes
using base64url encoding. [...] -
jsonDecode(
String source, {Object? reviver(Object? key, Object? value)?}) → dynamic - Parses the string and returns the resulting Json object. [...]
-
jsonEncode(
Object? object, {Object? toEncodable(Object? nonEncodable)?}) → String -
Converts
object
to a JSON string. [...]
Exceptions / Errors
- JsonCyclicError
- Reports that an object could not be stringified due to cyclic references. [...]
- JsonUnsupportedObjectError
- Error thrown by JSON serialization if an object cannot be serialized. [...]