質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

1回答

1219閲覧

Flutter - JsonSerializableでobject型を入れようとするとエラーになる

ludolf

総合スコア39

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2021/10/19 05:07

質問

表題の通りですが、JsonSeriarizableを使用してtoJson/fromJsonを作成していますが、object型を入れ込むと下記のエラーになります。

Flutter

1Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String' in type cast

公式が紹介しているやり方を真似したり、エラー文を検索したりしましたが、エラーが解消しませんでした。原因は何でしょうか?
下記実際のコードです。

Fluter

1//HTTP通信のPostで使用する 2@JsonSerializable(explicitToJson: true,checked: true,) 3class HogeData { 4 late String mode; 5 @JsonKey(fromJson: _stringToInt , toJson: _stringFromInt) 6 int uid; 7 GenkouFormat? genkouFormat; 8 9 HogeData({ 10 required this.mode, 11 required this.uid, 12 required this.genkouFormat, 13 }); 14 15 //Int型のtoJson/fromJson 16 static int _stringToInt(String id) => int.parse(id); 17 static String _stringFromInt(int id) => id.toString(); 18 19 factory HogeData.fromJson(Map<String, dynamic> json) => 20 _$HogeDataFromJson(json); 21 22 Map<String, dynamic> toJson() => _$HogeDataToJson(this); 23}

Flutter

1@JsonSerializable() 2class GenkouFormat { 3 @JsonKey(fromJson: _stringToInt , toJson: _stringFromInt) 4 final int kid; 5 @JsonKey(fromJson: _stringToInt , toJson: _stringFromInt) 6 final int gen_id; 7 @JsonKey(fromJson: _stringToInt , toJson: _stringFromInt) 8 final int gen_bid; 9 final String? genkou_type; 10 11 GenkouFormat({required this.kid,required this.gen_id,required this.gen_bid, this.genkou_type}); 12 13 factory GenkouFormat.fromSource(Map src) { 14 return GenkouFormat( 15 kid: src['kid'], 16 gen_id: src['gen_id'], 17 gen_bid: src['gen_bid'], 18 genkou_type: src['genkou_type'], 19 ); 20 } 21 22 factory GenkouFormat.fromJson(Map<String, dynamic> json) =>_$GenkouFormatFromJson(json); 23 Map<String, dynamic> toJson() => _$GenkouFormatToJson(this); 24 25 static int _stringToInt(String id) => id == null ? 0 : int.parse(id); 26 static String _stringFromInt(int id) => id.toString(); 27}

Flutter

1try { 2 //HTTP・POSTを使用してデータを投げる 3 response = await http.post( 4 requestUrl, 5 body: HogeData.toJson(), //※※ここでエラーになる※※ 6 headers: {"Content-Type": "application/x-www-form-urlencoded"}, 7 ); 8 9 //無事通信が出来ていれば中に入る 10 if (response!.statusCode == 200) { 11 print("response 200"); 12 print(response!.body); 13 14 } 15} on Exception catch (error) { 16 print("response network Error"); 17 print("error: $error"); 18} 19

やったこと

公式では下記で出来るっぽいので追加しましたがエラーになっています。
@JsonSerializable(explicitToJson: true)

教えて欲しいこと

なぜあのエラー文が出てくるのか、もしくは原因を解決できる参考URLなど頂ければ幸いです!
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

genkouFormatが配列で渡されてませんか?

json

1"genkouFormat": [ 2 { 3 // 中身 4 }, 5 { 6 // 中身 7 } 8]

このようになっている場合、取得するデータはGenkouFormatではなくList<GenkouFormat>になります。

投稿2021/10/29 03:39

Yasha_Wedyue

総合スコア830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問