Как настроить генерацию кода библиотеки json_serializable?

#json #dart #flutter

#json #dart #флаттер

Вопрос:

Я использую библиотеку json_serializable и firebase для базы данных. Мне нужно сериализовать и десериализовать мой класс данных в / из JSON. Но формат firebase json выглядит следующим образом

 {
  'some_id_here': {
     'title': 'some_title',
     'content': 'some_content',
     'timestamp': 'some_timestamp'
   }, ...
}
  

Вот мой класс

 import 'package:json_annotation/json_annotation.dart';

part 'update.g.dart';

@JsonSerializable()

class Update {
  final String id, title, content, timestamp;

  Update({this.id, this.title, this.content, this.timestamp});

  factory Update.fromJson(Map<String, dynamic> json) => _$UpdateFromJson(json);

  Map<String, dynamic> toJson() {
    return _$UpdateToJson(this);
  }
}
  

Итак, как настроить функцию toJSON(), чтобы я мог десериализовать из

 Update('ID', 'TITLE', 'CONTENT', 'TIMESTAMP');
  

Для

 {
  'ID': {
     'title': 'TITLE',
     'content': 'CONTENT',
     'timestamp': 'TIMESTAMP'
  }
}
  

Ответ №1:

Попробуйте это

  class ID {
  String title;
  String content;
  String timestamp;

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> ID = new Map<String, dynamic>();
    ID['title'] = this.title;
    ID['content'] = this.content;
    ID['timestamp'] = this.timestamp;
    return ID;
  }
}
  

Комментарии:

1. Потому что возвращаемый json не является списком объекта. Должен ли я использовать Map<String, ID> id; ??