ど素人丸出しの質問で申し訳ありませんが、下記についてご教授頂きたく質問させて頂きます。
宜しければご回答お願い致します。
前提・実現したいこと
最終的には以下のようにしたいと考えています。
1)メインとサブの2ページ構成にしたい
2)サブページに以下の機能を実装したい
・ HTTPレスポンスで拾ってきたJSON文字を元に、JSONの件数に従ってリストを作成
・ サブページに遷移すると作成した
【参考にしたWEBページ】 ※下記ページ以外にも多数
https://qiita.com/yasutaka_ono/items/6d2a0d3b0856598f9788#6%E3%83%87%E3%83%BC%E3%82%BF%E5%A4%89%E6%8F%9Bjson-map-and-list
https://algorithm.joho.info/flutter/load-json-dart/#toc1
発生している問題・エラーメッセージ
「指定しているデータ形式と実際受け取ったデータ形式の相違」が原因なのは理解していますが
結局どのようにすればいいのかが全く分からず困っています。
↓「Map data = [] as Map;」の時のエラー
The following TypeErrorImpl was thrown building Builder: Expected a value of type 'Map<dynamic, dynamic>', but got one of type 'List<dynamic>'
↓「List data = [];」の時のエラー
→ 2:[] が先に来ている辺りに原因があるんだろうなと思いつつ対処方法がわからず
2:[] 1:{ "userID": 1001, "date": "2021/07/11" } Error: Expected a value of type 'List<dynamic>', but got one of type '_JsonMap'
該当のソースコード
モックアップはjson-server(node.js)を使用しています。
{"profile":{"userID":1001,"date":"2021/07/11"}}
curlおよびブラウザからはちゃんと表示されます
user@macbook ~ % curl -X GET http://testserver:3000/profile { "ID": 1001, "date": "2021/07/20" }%
Flutterのソースは下記です
(※ウィジェット周りは別のエラーが発生するので一旦省いています)
class _TestState extends State<TestPage> { Map data = [] as Map; // List data = []; Future getData() async { http.Response res = await http.get( Uri.parse("http://testserver:3000/profile"), headers: {'Content-Type': 'application/json; charset=utf-8'}); print("1:"+res.body); setState(() { data = json.decode(res.body); }); } @override Widget build(BuildContext context) { print("2:"+data.toString()); return Scaffold( appBar: AppBar(title: Text('')), body: Center(child: Text(""))); } }
試したこと
・ とりあえずネット検索で同様事象の質問サイト(海外含め)を参照
→WEBページ記載の改善例を参考に試すも改善せず
・ JSON-Server側(jsonの構文)チェックなど実施
→構文エラーなし、改善みられず
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/28 00:48