我在下面有回應
[
{
"name": "Kamchatka",
"about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
"email": "[email protected]",
"index": 1,
"picture": "https://thispersondoesnotexist.com/"
},
{
"name": "Valjakutse",
"about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
"email": "[email protected]",
"index": 2,
"picture": "https://thispersondoesnotexist.com/"
},
{
"name": "Shipment",
"about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
"email": "[email protected]",
"index": 3,
"picture": "https://thispersondoesnotexist.com/"
}
]
我有一個異步的 Future,應該接受回應并將其轉換為 HashMap 串列,如下所示
Future<List<HashMap<String, dynamic>>> _fetchUsersListHashMap() async {
try {
final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));
late List<HashMap<String, dynamic>> responseList;
responseList = List<HashMap<String, dynamic>>.from(json.decode(response.body));
String stringList = jsonEncode(responseList);
log("FetchUsersListHashMap $stringList");
return responseList;
} catch (e) {
log("FetchUsersListHashMapException $e");
rethrow;
}
}
當我呼叫 _fetchUsersListHashMap 時出現以下錯誤
Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'HashMap<String, dynamic>'
我什至嘗試改變分配 responseList 的方式
responseList = json.decode(response.body);
但它沒有為 HashMap 串列分配來自 url 的回應
下面是我在java中是如何做到的,只是我無法在flutter中復制相同的概念
List<HashMap<String, Object>> responseList = new Gson().fromJson(response,
new TypeToken<List<HashMap<String, Object>>>() {
}.getType());
uj5u.com熱心網友回復:
Future<List<HashMap<String, dynamic>>> _fetchUsersListHashMap() async {
try {
final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));
final decoded = json.decode(response.body);
final responseList = decoded
.map<HashMap<String, dynamic>>((e) => HashMap<String, dynamic>.from(e))
.toList();
String stringList = jsonEncode(responseList);
log("FetchUsersListHashMap $stringList");
return responseList;
} catch (e) {
log("FetchUsersListHashMapException $e");
rethrow;
}
}
uj5u.com熱心網友回復:
試試這個:
List<HashMap<String, dynamic>> responseList = [];
List jsonList = List.from(jsonDecode(response.body));
jsonList.forEach((element) {
responseList.add(HashMap.from(Map.from(element)));
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/410877.html
標籤:
