Flutter学習総括(十九、FlutterのJson解析)

8213 ワード

FlutterのJson解析


一緒に0からFlutterを勉強しましょう!


Jsonは私たちが最もよく使うデータ転送フォーマットで、私たちはデータを送信する時にオブジェクトをJsonに変える必要があります.データを受け取った後、Jsonをオブジェクトに変える必要があります.これは私たちの変換が必要です.私たちは自分でこれらのJson文字列を解くことができます.第三者ライブラリを利用して自動的に変換することもできます.手動変換では、変換のクラスライブラリを導入します.
	import 'dart:convert';

導入後、jsonライブラリを直接使用して、jsonとエンティティの変換を支援することができます.json解析:
	String jsonStr = '{"username":"flutter","password":"pwd"}';
    Map<String,dynamic> decode = json.decode(jsonStr);//       json       Map  
    print("username is ${decode['username']}");//    Map        username  key  

上のdecodeをjsonに変えて、できるかどうか見てみましょう.
	String codeStr = json.encode(decode);//         encode    
    print("codeStr is ${codeStr}");//      json    

これは比較的簡単なjson解析方式であり、プロジェクトで最もよく使われているJsonを使用してオブジェクトを回転する方法を見てみましょう.他のプラットフォームでは多くの変換されたクラスライブラリを見ることができます.ここでは公式に提供されているjsonを使用しています.serializable. サードパーティ製の自動変換ライブラリを導入するには、次の手順に従います.
dependencies:
  json_annotation: ^3.0.1
  json_serializable: ^3.3.0

エンティティークラスを作成するには、次の手順に従います.
import 'package:json_annotation/json_annotation.dart';//        
part 'user.g.dart';//           
@JsonSerializable()//               json  
class User{
  User(this.userName,this.password);
  @JsonKey(name:"name")//      json            
  String userName;
  String password;
//       ,                     
  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}

これらを書き終わると、赤が付いていて正常に使用できないところがあります.自動的に生成されないクラスとコードをコンパイルする必要があります.プロジェクトのルートディレクトリで実行する必要があります.
flutter packages pub run build_runner build

または、
flutter packages pub run build_runner watch

1つ目の方法は、変換が必要なエンティティを作成した後、手動で構築することです.2つ目は、オブジェクトを起動して自動的に構築を支援し、変換が必要なエンティティが発見されると、不足しているファイルの構築を自動的にコンパイルします.上のコマンドを実行すると、次のエラー・プロンプトが表示され、自動的に構築されたクラス・ライブラリを導入する必要があります.
Could not find package "build_runner". Did you forget to add a dependency?
pub finished with exit code 65

クラスライブラリを追加するには
dependencies:
	build_runner: ^1.10.0

その後、正常に使用できます.エンティティークラスの作成は煩雑に見えますが、実際には多くのサードパーティがエンティティークラスを作成するためのツールを用意しています.例えば、1、オンライン生成ツール:JsonToDart 2、Android Studioを例にFlutterJsonBeanFactoryプラグインをインストールできます.インストールに成功した後、メニューバーのFile->Newを選択すると、JsonToDartBeanActionが1つ増えました.クラス名と解析したいJsonを入力すると欲しいBeanが得られる.準備ができました.使用するときは、どのように使用するかを見てみましょう.それとも、上記の例のjsonを例にします.
	//    User  
	User user = User.fromJson(json.decode(jsonStr));
    //      String  
    var userStr = User("flutter","pwd11").toJson();

複雑なオブジェクトタイプに対して、合理的な構造ができていれば、本編の基本的なJson解析はこれを学ぶ必要があります.

次にFlutterのアニメーションを学びましょう