我想訪問這個 json 物件的屬性并在螢屏上顯示它們以進行測驗。
我可以在螢屏上顯示整個 json 物件:
{
"2021": {
"januari": {
"value": 100,
},
"februari": {
"value": 200,
},
}
"2022": {
"januari": {
"value": 100,
},
"februari": {
"value": 200,
},
}
}
這是我的顯示方式:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Page View'),
),
body: Container(
child: Card(
child: FutureBuilder(
future: getJson(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
}
return const Text("no data");
},
))));
}
它顯示的 json 與我在示例中顯示的完全一樣。我只是想知道如何在螢屏上訪問和顯示屬性,例如“2021”、“januari”和“value”的值?
編輯
當我做: Text(snapshot.data['2021']['januari'])
我得到: type 'String' is not a subtype of type 'int' of 'index'
uj5u.com熱心網友回復:
這是給您的示例。你可以在dartpad里拿它。因此,為了修復您的行為,可能需要將您的快照資料放入 Map<dynamic,dynamic> 中,然后像下面的代碼一樣使用它。
import 'dart:convert';
String data = '''{
"2021": {
"januari": {
"value": 100
},
"februari": {
"value": 200
}
},
"2022": {
"januari": {
"value": 100
},
"februari": {
"value": 200
}
}
} ''';
void main() {
Map<dynamic,dynamic> json = jsonDecode(data);
print(json.keys.first);
print(json['2021'].keys.first);
print(json['2021']['januari']['value']);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/393785.html
