Help us understand the problem. What is going on with this article?

DartでのJSONのエンコードとデコード

More than 1 year has passed since last update.

docomo Developer supportを運用している@akatsukahaです.

DartでJSONをエンコード/デコードする方法を記載します.DartではJSONをエンコード/デコードするライブラリがdart:convertで提供されています.詳細は,dart:convert - decoding and encoding JSON, UTF-8, and moreを参照してください.以下はDecoding and encoding JSONを和訳し,DartPadですぐ実行出来るように少し修正した内容になっています.


1. JSONのデコードとエンコーディング

1.1. JSONのデコード

jsonDecode()を使用してJSONでエンコードされた文字列をDartオブジェクトにデコードします。

// NOTE: JSONのキーには一重引用符(')ではなく二重引用符(")を利用します.
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);
実行結果
true
true
true

DartPadで利用する場合は下記をコピペしてください

import 'dart:convert';

void main(){
  // NOTE: JSONのキーには一重引用符(')ではなく二重引用符(")を利用します.
  var jsonString = '''
    [
      {"score": 40},
      {"score": 80}
    ]
  ''';

  var scores = jsonDecode(jsonString);
  print(scores is List);

  var firstScore = scores[0];
  print(firstScore is Map);

  print(firstScore['score'] == 40);
}

1.2. JSONのエンコード

DartオブジェクトをjsonEncode()でJSON形式の文字列にエンコードします。

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}]');
実行結果
true

DartPadで利用する場合は下記をコピペしてください

import 'dart:convert';

void main(){

  var scores = [
    {'score': 40},
    {'score': 80},
    {'score': 100, 'overtime': true, 'special_guest': null}
  ];

  var jsonText = jsonEncode(scores);
  print(jsonText ==
      '[{"score":40},{"score":80},'
      '{"score":100,"overtime":true,'
      '"special_guest":null}]');
}
akatsukaha
docomo Developer supportの企画・運用をしています。
https://dev.smt.docomo.ne.jp/
nttdocomo
企業や開発者向けにドコモが保有する技術に限らず、様々なAPIを提供するサービス
https://dev.smt.docomo.ne.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away