Flutter / Dart JSON и сериализация существующего библиотечного класса - PullRequest
2 голосов
/ 13 января 2020

У меня есть класс:

import 'package:google_maps_flutter/google_maps_flutter.dart';

class Place {
  Place({
    this.address,
    this.coordinates,
  });

  final String address;
  final LatLng coordinates;
}

LatLng - это класс google_maps_flutter . Как я могу сделать мой сериализуемый класс Place с использованием json_annotation и json_serializable?

Большое спасибо!

1 Ответ

1 голос
/ 13 января 2020

Вставьте этот код в вашу модель

, чтобы получить информацию из ответа JSON, просто сделайте это после вашего запроса

  1. final place = placeFrom Json (response.body );
  2. для получения адреса => = place.address
  3. для получения координат => place.coordinates.lng, place.coordinates.lat

==== ========================================= *=====


import 'dart:convert';

Place placeFromJson(String str) => Place.fromJson(json.decode(str));

String placeToJson(Place data) => json.encode(data.toJson());

class Place {
    String address;
    Coordinates coordinates;

    Place({
        this.address,
        this.coordinates,
    });

    factory Place.fromJson(Map<String, dynamic> json) => Place(
        address: json["address"],
        coordinates: Coordinates.fromJson(json["coordinates"]),
    );

    Map<String, dynamic> toJson() => {
        "address": address,
        "coordinates": coordinates.toJson(),
    };
}

class Coordinates {
    String lat;
    String lng;

    Coordinates({
        this.lat,
        this.lng,
    });

    factory Coordinates.fromJson(Map<String, dynamic> json) => Coordinates(
        lat: json["lat"],
        lng: json["lng"],
    );

    Map<String, dynamic> toJson() => {
        "lat": lat,
        "lng": lng,
    };
}
...