Dart JsonCodecクラスのdecoder()メソッドとencoder()メソッド

Dar言語StreamクラスtoSet()メソッドDart

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文字列に変換するメソッド。

コメント

タイトルとURLをコピーしました