Невозможно сгенерировать метод 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.