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}]');
}