[解決済み] flutterでjsonからオブジェクトのリストをデシリアライズする方法
2022-11-28 13:01:05
質問
jsonのシリアライズにdartパッケージのjson_serializableを使用しています。flutterのドキュメントを見ると、次のように単一のオブジェクトをデシリアライズする方法が示されています。
Future<Post> fetchPost() async {
final response =
await http.get('https://jsonplaceholder.typicode.com/posts/1');
if (response.statusCode == 200) {
// If the call to the server was successful, parse the JSON
return Post.fromJson(json.decode(response.body));
} else {
// If that call was not successful, throw an error.
throw Exception('Failed to load post');
}
}
しかし、私は単一のインスタンスではなく、アイテムのリストに対して同じことを行う方法を見つけ出すためにdartに十分に精通していない。
どのように解決するのですか?
さて、あなたのサービスは、応答本文がマップであるか、またはそれに応じてマップのリストであるかのいずれかを処理することになります。 あなたが持っているコードに基づいて、あなたは1つのアイテムのために会計処理をしています。
もし私があなたの質問を正しく理解しているならば、レスポンスボディが反復可能であるならば、あなたはそれに応じてパースし、歩く必要があります。
例を挙げます。
Iterable l = json.decode(response.body);
List<Post> posts = List<Post>.from(l.map((model)=> Post.fromJson(model)));
ここで、postは投稿のLISTである。
EDIT : 私はここで明確にするためのメモを追加したかったのです。 ここでの目的は、返されたレスポンスをデコードすることです。 次のステップは、JSONオブジェクトのイテラブルをあなたのオブジェクトのインスタンスに変換することです。 これは、クラス内にfromJsonメソッドを作成し、JSONを適切に受け取り、それに応じて実装することで行われます。 以下は、実装例です。
class Post {
// Other functions and properties relevant to the class
// ......
/// Json is a Map<dynamic,dynamic> if i recall correctly.
static fromJson(json): Post {
Post p = new Post()
p.name = ...
return p
}
}
私は最近、達成しなければならないタスクのためのより良いユーティリティを支持して、Dartから少し抽象化されています。 そのため、私の構文はほんの少しずれている可能性がありますが、これは擬似コードです。
関連
-
[解決済み] Twitter API エラー 215
-
[解決済み] SQLAlchemy (psycopg2.ProgrammingError) can't adapt type 'dict'.
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み] Notepad++でJSONを再フォーマットする方法は?
-
[解決済み] JSONをC#のダイナミックオブジェクトにデシリアライズする?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] JSONファイルのMongoimport
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】tsconfig.json: Build:No inputs were found in config file.
-
[解決済み] Kubernetes / kubectl - 「コンテナ名を指定する必要があります」とありますが、そのような感じですか?
-
[解決済み] ヘッダ値:application/vnd.api+json
-
[解決済み] コマンドラインを使用してJSONオブジェクトの項目をカウントする方法は?
-
[解決済み] Azure VMのエラーです。"あなたのアカウントは、このデバイスを使用できないように設定されています。詳細については、システム管理者にお問い合わせください" [終了しました]。
-
[解決済み] JSONでコメントを使用することはできますか?
-
Ext.grid.EditorGridPanelを使用する際に発生する問題点
-
[解決済み] ネストされたJSONオブジェクトのアンマーシャリング
-
[解決済み] Swift Codableからプロパティを除外する方法は?
-
[解決済み] Swift 4のDecodableプロトコルでカスタムキーを使うには?