google / json_serializable.dart

Generates utilities to aid in serializing to/from JSON.
https://pub.dev/packages/json_serializable
BSD 3-Clause "New" or "Revised" License
1.54k stars 392 forks source link

How to use fromJson and toJson to split it into 2 fields #1412

Open flikkr opened 3 months ago

flikkr commented 3 months ago

I have this Destination class where I store a LatLong object which also uses json serializable, and has a latitude and longitude field. I want the output of LatLong to not be nested in a coordinates field. Similarly, fromJson should parse the lat and long and create a LatLong object.

part 'destination.g.dart';

@JsonSerializable()
class Destination {
  final int id;
  final LatLong coordinates;

  Destination({
    required this.id,
    required this.coordinates,
  });

  factory Destination.fromJson(Map<String, dynamic> json) => _$DestinationFromJson(json);
}

The output should be:

{
  "id": 1,
  "latitude": 1,
  "longitude": 1
}

But my current approach outputs like this:

{
  "id": 1,
  "coordinates": {
    "latitude": 1,
    "longitude": 1
  }
}

I want to avoid creating a latitude and longitude field in my Destination class. Is there a way to achieve this?