Невозможно сгенерировать метод toJson с помощью Serverpod

У меня возникли проблемы с использованием процесса сериализации для serverpod. Вот репозиторий, если хотите посмотреть: https://github.com/fhir-fli/fhirpod . Все мои классы заморожены, и я настроил все fromJson, включив в него диспетчеры сериализации. Это не имеет ошибок. Когда я пытаюсь сгенерировать код, если я удалю json_serializable из pubspec и всю часть «file.g.dart»; код, то он генерируется нормально. Однако он не создает необходимые файлы toJson().

Однако когда я включаю json_serializable для генерации методов toJson(), я получаю это сообщение об ошибке:

      [SEVERE] json_serializable on lib/r4/resource_types/financial/general/general.dart:

Expecting a `fromJson` constructor with exactly one positional parameter. The only extra parameters allowed are functions of the form `T Function(Object?) fromJsonT` where `T` is a type parameter of the target type.
package:fhir/r4/special_types/special_types.dart:483:16

Я использую serverpod_serialization: ^1.1.0.

Просто надеюсь, что кто-то другой имел подобный опыт и нашел решение.

1 ответ

Это лишь частичный ответ (и своего рода хакерский), так что кто-нибудь еще, пожалуйста, не стесняйтесь добавлять. Убедитесь, что у вас естьserverpod_serializationв вашейpubspec.yamlфайл и импортировать в любые файлы, где вы хотите сериализовать вещи.

Бегатьflutter pub run build_runner watch --delete-conflicting-outputs. Опять же, это лишь частичный ответ, потому что вы не сможете запустить его после исправления. Затем выполните поиск и замену всех файлов, которые вы хотите создать для serverpod. Я сделал что-то вроде поиска:

      .fromJson(Map<String, dynamic> json

и замените его на:

      .fromJson(Map<String, dynamic> json, [SerializationManager? serializationManager,]

На этом этапе импортируйте этот пакет в каталог вашего сервера. Затем вserver/config/generate.yamlфайле, обязательно добавьте все классы в extraClasses:

      type: server

client_package_path: ../fhirpod_client

extraClasses:
  - package:fhir/r5.dart:Account
  - package:fhir/r5.dart:ActivityDefinition
  - package:fhir/r5.dart:ActorDefinition

Теперь вы можете запуститьserverpod generateи он будет генерировать код на стороне сервера, но только как SerializedEntity, а не как TableRow.

Другие вопросы по тегам