「Flutter/外部ライブラリ/json」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→json.decodeが使えない場合) |
|||
| 行60: | 行60: | ||
*import 'dart:convert';されてるか確認 | *import 'dart:convert';されてるか確認 | ||
*strJsonの部分をjsonのstringとして定義していたら、別の変数名に変える | *strJsonの部分をjsonのstringとして定義していたら、別の変数名に変える | ||
| + | |||
| + | ==参考== | ||
| + | https://qiita.com/rkowase/items/f397513f2149a41b6dd2 | ||
| + | |||
| + | http://ryuichi111std.hatenablog.com/entry/2018/11/01/035333 | ||
2019年5月3日 (金) 18:25時点における版
準備
jsonパッケージインストール
pubspec.yaml
dependencies: json_annotation: ^2.0.0 dev_dependencies: build_runner: ^1.0.0 json_serializable: ^2.0.0
$ flutter package get
を実行
サンプル
lib/home/dao/user.dart
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
User(this.name, this.age);
String name;
int age;
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
以下を実行しuser.g.dartファイルを作成
$ flutter packages pub run build_runner build
以下ファイルが作成されていることを確認
lib/home/dao/user.g.dart
part of 'user.dart';
User _$UserFromJson(Map<String, dynamic> json) {
return User(json['name'] as String, json['age'] as int);
}
Map<String, dynamic> _$UserToJson(User instance) =>
<String, dynamic>{'name': instance.name, 'age': instance.age};
lib/main.dart
import 'package:memotyou/home/dao/user.dart';
import 'dart:convert';
String strJson = '{"name":"taro","age":11}';
print('json: $strJson');
dynamic mapUser = json.decode(strJson);
User user = User.fromJson(mapUser);
print('name: ${user.name}, age: ${user.age}');
String serializedJson = json.encode(user.toJson());
print('json: $serializedJson');
json.decodeが使えない場合
- import 'dart:convert';されてるか確認
- strJsonの部分をjsonのstringとして定義していたら、別の変数名に変える
