Flutter/Dart JSON 和现有库类的序列化

Mar*_*rco 6 serialization json dart flutter json-serialization

我有一堂课:

import 'package:google_maps_flutter/google_maps_flutter.dart';

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

  final String address;
  final LatLng coordinates;
}
Run Code Online (Sandbox Code Playgroud)

LatLng是google_maps_flutter的一类。如何使用and使我的Place类可序列化?json_annotationjson_serializable

非常感谢!

Ami*_*beh 0

将此代码放入您的模型中

要从 JSON 响应获取信息,只需在请求后执行此操作

  1. 最终位置= placeFromJson(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,
    };
}
Run Code Online (Sandbox Code Playgroud)