Flutterについて
はじめに
今回はコミュニティ参加者の方から Flutter について質問がありましたので、そちらを書いていきます。
質問内容
現在公式チュートリアルの型をそのまま使って HTTP リクエストの受け渡しを試みていますが、シミュレーターには「クラスの読み込みに失敗してる」とエラーが出ています。
クラス定義の箇所に問題がある気がしますが、原因はまだわかってません;;
取得すべきレスポンスフィールド名(?)が間違えてるのかと思ってます!
目次
- エラーの原因
- Parse(パース)とは
- エンコードとは
- Json とは
- レスポンスフィールド名とは
- まとめ
1.エラーの原因
今回のエラーの主な原因はリクエスト URL が間違った(404)ことと Json の構造が問題でした
エラー原因に関連する Json に対する理解の洗い出しをしました
- Parse が間違っている
- Parse がどこで行われているか分からない
- json parse online にリクエストの内容を貼り付けて Json の構造をみてもらった(http://json.parser.online.fr/)
- 配列の JsonParse のやり方を調べる
参考:https://ichi.pro/flutter-de-no-fukuzatsuna-json-no-kaiseki-27300625035333 - レスポンスフィールド名とは
2.Parse(パース)とは
そもそも Parse(パース)とはなんなのか?日本語で訳すと解析する
コンピュータプログラムの機能・処理の一つで、一定の書式や文法に従って記述されたデータを解析し、プログラムで扱えるようなデータ構造の集合体に変換することをパースという。(引用:IT 用語辞典)
3.エンコードとは
データを他の形式へ変換すること
エンコードの逆、エンコードしたデータを元の形に戻す行為はデコード
という
参考: https://tech-unlimited.com/urlencode.html
URL エンコード
実際にブラウザの URL に貼り付けると、別のテキストに変わる = エンコードされた状態
以下二つの URL は同じ検索結果になる
https://www.google.com/search?q=日本語&oq=日本語
https://www.google.com/search?q=%E6%97%A5%E6%9C%AC%E8%AA%9E&oq=%E6%97%A5%E6%9C%AC%E8%AA%9E
URL のエンコードの場合、特定のキーワードが入っている
\u: ユニコード
%: URL エンコード
ASCII は日本語使えない
「\u エンコード」で調べてみると.. エンコードにもルールがある
文字コード
例)日本語で扱うデータの大きさと英語で扱うデータの大きさは違う = データの扱いのミスマッチ
歴史として、英語で統一したらミスマッチないよね → 英語統一されている
Base64 エンコード
- 規則性がある
- 最も原始的だが、めちゃくちゃ使用するケースがある
画像送信
画像データをテキストデータに変換してから送受信している
テキストデータでやりとりできるように Base64 エンコードしてデコードでテキストデータから画像データに戻す
末尾に 「==」 がつくと大体 Base64
パースとデコードの違い
パースは解析、デコードはエンコードされたデータを元に戻すこと。
実装ベースだと、Json でもらったものをデコードして元のデータに戻す → パースで型指定したものに入れ込む
4.Json とは
JavaScript Object Notation の略
JavaScript のデータ定義文をベースとした、簡易的なデータ定義言語
JavaScript だけではなく、Java, PHP, Ruby, Python など、様々な言語間のデータ交換、特に Ajax や REST API などで使用されている
これまでは、共通データ定義言語として XML が利用されてきましたが、現在では、簡易的な JSON が利用されるケースが増えてきている
結論
異なるプログラミング言語間でデータをやりとりするための、共通のデータ記述形式
5.レスポンスフィールド名とは
API から返されるレスポンスには、すべての API に共通のフィールドと、API ごとに定義される個別のフィールドがあります。
以下に共通のフィールド
フィールド | タイプ | 意味 |
---|---|---|
RequestId | String | API リクエストごとに割り当てられるユニークな ID |
参考:https://manual.iij.jp/dns/doapi/index.html |
6.まとめ
- Parse とはコンピュータプログラムの機能・処理の一つで、一定の書式や文法に従って記述されたデータを解析し、プログラムで扱えるようなデータ構造の集合体に変換することをパースという。
- エンコードとはデータを他の形式へ変換することエンコードの逆、エンコードしたデータを元の形に戻す行為は
デコード
という。 - Json とは異なるプログラミング言語間でデータをやりとりするための、共通のデータ記述形式のこと。
Discussion