0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Android Studioで、Flutterを使ってJSONを扱う方法。
色々なサイトで、記載されているのですが、記載している内容にばらつきがあり、ビルド出来ないものがあったりと大変だったので、記事にしました。

必要なものを定義

JSONを扱うプラグインは、色々あるのですが、今回はjson_annotationjson_serializableを使用します。

pubspec.yml
dependencies:
  json_annotation: ^4.1.0

dev_dependencies:
  build_runner: ^2.1.2
  json_serializable: ^5.0.2

モデルを定義

user.dart
import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  int userId;
  int id;
  String title;
  bool completed;
  @JsonKey(name: '_type')
  String? type;

  User(
      {required this.userId,
      required this.id,
      required this.title,
      required this.completed,
      this.type});

  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}
  • 解説
import 'package:json_annotation/json_annotation.dart';

こちらを記載しても参照出来ない場合は、Android Studioを再起動してみてください。

part 'user.g.dart';

記載している段階では、エラーとなっていますので、Android Studioのターミナルで下記を実行してください。

flutter packages pub run build_runner build

@JsonKey で、名前を変更することが可能です。

こちらで、JSONを扱うことが出来ます。

JSONに変換

import 'package:myapp/user.dart';
import 'dart:convert';

  User paserUser() {
    String text = '''
{
	"userId": 1,
	"id": 1,
	"title": "delectus aut autem",
	"completed": false,
	"_type": null
}
''';

    var decode = json.decode(text);
    User user = User.fromJson(decode);
    return user;
  }

他のサイトでは、DartのNull safetyに対応してなかったりとかなり苦労しましたので、参考になればと思います。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?