개발하자

json을 호환 가능한 다트 형식으로 변환하고 싶습니다. 도와주세요. 저는 플러터 초보입니다

Cuire 2023. 9. 20. 01:51
반응형

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

반응형