facebook twitter hatena line email

「Flutter/外部ライブラリ/json」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(サンプル)
(サンプル)
行42: 行42:
 
Map<String, dynamic> _$UserToJson(User instance) =>
 
Map<String, dynamic> _$UserToJson(User instance) =>
 
     <String, dynamic>{'name': instance.name, 'age': instance.age};
 
     <String, dynamic>{'name': instance.name, 'age': instance.age};
 +
</pre>
 +
 +
main.dart
 +
<pre>
 +
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');
 
</pre>
 
</pre>

2019年5月3日 (金) 18:11時点における版

準備

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};

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