首页 > 解决方案 > 如何使用 dart json_serializable 包序列化 GeoPoint

问题描述

我正在尝试使用以下软件包按距离过滤我的 Firestore 集合。

https://github.com/fluttercommunity/firestore_helpers

参考他们的示例,他们正在使用 jaguar_serializer 将从 Firestore 接收到的数据转换为 Location 类。我已经在我的应用程序中实现了他们的 getDataInArea 函数,但我目前被卡住了,因为我使用的是 json_serializable。

我环顾四周,发现如果在以下链接中使用 built_value,有一个关于如何处理 GeoPoint 的建议。

https://github.com/google/built_value.dart/issues/417#issuecomment-391661750

所以我想知道有没有办法实现类似 jaguar_serializer 和 built_value 中显示的内容,但使用 json_serializable 包。

我猜一种方法是使用@JsonKey(fromJson: , toJson: ),但我不太确定如何去做。

标签: firebasefluttergoogle-cloud-firestore

解决方案


经过更多的挖掘并试图了解事情是如何运作的。我设法通过在课堂上写下以下内容来解决我的问题。

  @JsonKey(fromJson: _fromJsonGeoPoint, toJson: _toJsonGeoPoint)
  GeoPoint location;

  static GeoPoint _fromJsonGeoPoint(GeoPoint geoPoint) {
    return geoPoint;
  }

  static GeoPoint _toJsonGeoPoint(GeoPoint geoPoint) {
    return geoPoint;
  }

我想这个想法只是不对 GeoPoint 对象进行任何更改。无论如何,我很想听到这是正确的方法,或者有更好的方法来做到这一点。干杯!


推荐阅读