色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

dart json泛型解析

夏志豪1年前8瀏覽0評論

Dart是一門強類型語言,但在處理網絡請求時,常常需要將JSON數據轉換成對象。JSON泛型解析是一種常用而有效的方法,讓我們來看看如何在Dart中實現。

首先,我們需要引入兩個庫:Dart的內置庫dart:convert和第三方庫json_annotation。json_annotation提供了注解@JsonSerializable,可以幫助我們自動生成JSON序列化和反序列化代碼。

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

定義一個類,并在類定義上方加上@JsonSerializable()注解。如果類中有最終變量,需要使用required修飾。

@JsonSerializable()
class Person {
String name;
int age;
Person({required this.name, required this.age});
factory Person.fromJson(Mapjson) =>_$PersonFromJson(json);
MaptoJson() =>_$PersonToJson(this);
}

接下來,我們需要使用build_runner運行自動生成的代碼。如果沒有安裝,請使用以下命令來安裝:

flutter pub global activate build_runner

在根目錄下創建一個build.yaml文件,指定生成代碼的位置。

targets:
$default:
builders:
json_serializable:
options:
any_map: true
explicit_to_json: true
nullable: true
use_wrappers: true
create_factory: true
generate_for:
- lib/models/*.dart

在終端中運行以下命令:

flutter pub run build_runner build

現在,我們已經生成了JSON序列化和反序列化的代碼。

接著,我們需要使用Dart的內置庫dart:convert來執行JSON的解析。下面的代碼演示了如何將JSON字符串解析成一個列表:

ListparsePersons(String jsonString) {
final parsed = jsonDecode(jsonString).cast>();
return parsed.map((json) =>Person.fromJson(json)).toList();
}

最后,我們就可以使用這個方法來解析JSON數據了。

final jsonString = '[{"name":"Tom","age":18},{"name":"Jerry","age":19}]';
final Listpersons = parsePersons(jsonString);
persons.forEach((person) {
print(person.name);
});

使用JSON泛型解析,能夠更加方便地將JSON數據轉換成Dart對象。在Dart中使用@JsonSerializable注解,可以生成JSON的序列化和反序列化代碼,極大地減少了重復的工作量。