반응형
json을 호환 가능한 다트 형식으로 변환하고 싶습니다. 도와주세요. 저는 플러터 초보입니다
flotter & dart를 배우고 있는데 연습에서 상태 관리와 REST API 데이터를 구현하려고 했는데 2일 이후로 같은 오류가 발생했습니다. 제 과정은 튜터테일과 같지만 어딘가에서 실수가 있었습니다. 제 데이터 서비스가 있습니다
import 'dart:convert';
import 'package:flutter_cubit/model/data_model.dart';
import 'package:http/http.dart' as http;
class DataServices {
String baseUrl = "https://61f969ae69307000176f7243.mockapi.io";
Future<List> getInfo() async {
var apiUrl = '/DevMobile';
http.Response res = await http.get(Uri.parse(baseUrl + apiUrl));
try {
if (res.statusCode == 200) {
List<dynamic> list = json.decode(res.body);
print('donnees service non formaté $list');
return list.map((e) => DataModel.fromJson(e)).toList();
} else {
return <DataModel>[];
}
} catch (e) {
//print(e);
return <DataModel>[];
}
}
}
데이터 모델(Data Model)
class DataModel {
String name;
String img;
int price;
int people;
int stars;
String description;
String location;
dynamic createdAt;
DataModel({
required this.name,
required this.img,
required this.price,
required this.people,
required this.stars,
required this.description,
required this.location,
});
factory DataModel.fromJson(Map<String, dynamic> json) {
return DataModel(
name: json["name"],
img: json["img"],
price: json["price"],
people: json["people"],
stars: json["stars"],
description: json["description"],
location: json["location"],
);
print('Données du model $DataModel');
}
}
어디에 문제가 있는지 알기 위해 많은 인쇄를 한 후에 내가 튜토리얼처럼 모든 것을 할 때 데이터 서비스에서 모든 데이터가 사라지는 것을 보여주었다.
당신의 도움에 감사드립니다
class는 가격 필드를 포함하고 있지만 api는 가격 필드를 int 형태로 제공하므로 int로 파싱하거나 유형을 다음으로 변경합니다
String price;
---------------------------
Json 방식에서 로 바꾸다
factory DataModel.fromJson(Map<String, dynamic> json) {
return DataModel(
name: json["name"],
img: json["img"],
price: num.parse(json["price"]).toDouble(), // here it is changed
people: json["people"],
stars: json["stars"],
description: json["description"],
location: json["location"],
);
}
복사해서 붙여넣기만 하면 돼요.
또한 유형을 다음으로 변환할 때 dobule로 변경합니다
double price
반응형
'개발하자' 카테고리의 다른 글
주피터 노트북의 테마를 변경하시겠습니까? (0) | 2023.09.21 |
---|---|
주피터 노트북의 플롯 옆에 데이터 프레임을 표시하는 방법 (0) | 2023.09.20 |
펄럭이다. 드래그 가능 항목을 다른 드래그 가능 항목으로 끕니다 (1) | 2023.09.19 |
테라폼: 사용 가능한 제공자 패키지(Azapi)를 쿼리하지 못했습니다 (0) | 2023.09.18 |
활자 스크립트에서 크롬 확장 apis 사용 (0) | 2023.09.18 |