Json_Annotation неправильно обрабатывает вложенные классыAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Json_Annotation неправильно обрабатывает вложенные классы

Сообщение Anonymous »

У меня есть вложенные классы InventoryResult и Item, которые я хочу читать/записывать с помощью файлов json, и сгенерированный код json_annotation не сопоставляет список элементов в методе toJson(); Любопытно, что обработка вполне подходит для метода fromJson().
Ниже приведены мои 2 класса:

Код: Выделить всё

@JsonSerializable()
class InventoryResult {
List results;
int number;
int offset;
int totalResults;

InventoryResult({required this.results, required this.number, required this.offset, required this.totalResults});
factory InventoryResult.fromJson(Map json) => _$InventoryResultFromJson(json);
Map toJson() => _$InventoryResultToJson(this);

}

@JsonSerializable()
class Item {
int id;
String productName;

Item(
{required this.id,
required this.productName});

factory Item.fromJson(Map json) => _$ItemFromJson(json);
Map toJson() => _$ItemToJson(this);
}
и методы Inventory, сгенерированные fromJson() и toJson(), странно различаются:

Код: Выделить всё

InventoryResult _$InventoryResultFromJson(Map json) =>
InventoryResult(
results: (json['results'] as List)
.map((e) => Item.fromJson(e as Map))
.toList(),
number: (json['number'] as num).toInt(),
offset: (json['offset'] as num).toInt(),
totalResults: (json['totalResults'] as num).toInt(),
);

Map _$InventoryResultToJson(InventoryResult instance) =>
{
'results': instance.results, //INCORRECT NESTED CLASS HANDLING HERE
'number': instance.number,
'offset': instance.offset,
'totalResults': instance.totalResults,
};
Естественно, в результате, когда я читаю из Json, все правильно, когда я пишу в json, он просто пишет как «Экземпляр» вместо правильного анализа объекта Item. У меня есть json_annotation и json_serializable, которые также обновлены и полностью озадачены. Может ли это быть связано с тем, что я позже добавил в проект метод Item toJson()? После этого я много раз перестраивал, а также пытался полностью удалить сгенерированные файлы g.dart. Оба файла классов импортируют друг друга, пакет json_annotation и файлы g.dart. Сгенерированный элементом файл g.dart выглядит корректно с помощью методов fromJson() и toJson(). Я не могу найти проблему.

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-properly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»