DartのJsonCodecクラスのdecoder()メソッドとencoder()メソッドについてメモ書き。
JsonCodecクラスにはJSON文字列にエンコードするencode()メソッドと、JSON文字列をデコードするdecode()メソッドが定義されている。
dart:convertライブラリに含まれるjson定数はJsonCodecクラスをインプリメントしており、encode()メソッドとdecode()メソッドを使用できる。
公式サイトはこちら。
decode()メソッド
decode()メソッドを確認。
JSON文字列をMap型にデコードしてデータを抽出している。
import 'dart:convert';
void main() {
String region = '''
{
"関東": [
"東京",
"千葉"
],
"東北": [
"青森",
"秋田"
]
}
''';
// Json文字列をデコードし、Map型に格納
Map<String, dynamic> regionJson = json.decode(region);
// Map型からデータを抽出
regionJson.forEach((key, value) {
for (var element in value) {
print("$key $element");
}
});
}
実行結果。
関東 東京
関東 千葉
東北 青森
東北 秋田
encode()メソッド
encode()メソッドを確認。
Map型にデコードしたデータをJSON文字列に変換。
import 'dart:convert';
void main() {
String region = '''
{
"関東": [
"東京",
"千葉"
],
"東北": [
"青森",
"秋田"
]
}
''';
// JSON文字列をデコードし、Map型に格納
Map<String, dynamic> regionJson = json.decode(region);
// Map型からデータを抽出
regionJson.forEach((key, value) {
for (var element in value) {
print("$key $element");
}
});
// Map型にデコードしたデータをJSON文字列に変換
var encodeJson = json.encode(regionJson);
print(encodeJson);
}
実行結果。
最終行にJSON文字列にエンコードしたデータが出力されている。
関東 東京
関東 千葉
東北 青森
東北 秋田
{"関東":["東京","千葉"],"東北":["青森","秋田"]}
JSON文字列を人間が見やすいように整形して出力する場合はJsonEncoderクラスを使用する。
JsonEncoderクラスは以下を参照の事。
Dart JsonEncoderクラスのコンストラクタとconvert()メソッド
Map型等のオブジェクトをJson文字列に変換するメソッド。
コメント