Hi, I want to have a generic page wrapper. My Pageable class has generic List property and extends ListBase. Is it possible to deserialize JSON into a Pageable object with proper generic type passed to a deserialize function?
Example:
pageable.dart
```dart
import 'dart:collection';
import 'package:dart_json_mapper/dart_json_mapper.dart';
@jsonSerializable
@Json(processAnnotatedMembersOnly: true)
class Pageable extends ListBase {
@JsonProperty()
final List data;
@jsonProperty
final int page;
@jsonProperty
final int pageSize;
@jsonProperty
final int totalCount;
Pageable({
required this.page,
required this.pageSize,
required this.totalCount,
required this.data,
});
@override
set length(int newLength) {
data.length = newLength;
}
bool get isLast => data.length < pageSize;
@override
int get length => data.length;
@override
E operator [](int index) => data[index];
@override
void operator []=(int index, E value) {
data[index] = value;
}
}
```
main.dart
```dart
import 'package:dart_json_mapper/dart_json_mapper.dart';
import 'main.mapper.g.dart';
void main() {
initializeJsonMapper();
// Data should be Pageable.
final data = JsonMapper.deserialize>(someJsonData);
}
```
news.json
```json
{
"page": 1,
"pageSize": 10,
"totalPages": 1,
"totalCount": 2,
"data": [
...
],
}
```
When I try to do that, I get this error:
type 'List<dynamic>' is not a subtype of type 'Map<dynamic, dynamic>'
package:dart_json_mapper/src/mapper.dart 954:9 JsonMapper._deserializeObject
package:dart_json_mapper/src/mapper.dart 728:13 JsonMapper._enumerateConstructorParameters
package:dart_json_mapper/src/mapper.dart 768:5 JsonMapper._getNamedArguments
package:dart_json_mapper/src/mapper.dart 967:9 JsonMapper._deserializeObject
package:dart_json_mapper/src/mapper.dart 53:21 JsonMapper.deserialize
Here is the sample how to deal with generics + models. To be honest that's make them not really generic anymore, but it's possible to mitigate that issue.
Sorry have no time to put up a working code for your case 🤷
Hi, I want to have a generic page wrapper. My
Pageable
class has generic List property and extends ListBase. Is it possible to deserialize JSON into a Pageable object with proper generic type passed to a deserialize function?Example:
pageable.dart
```dart import 'dart:collection'; import 'package:dart_json_mapper/dart_json_mapper.dart'; @jsonSerializable @Json(processAnnotatedMembersOnly: true) class Pageablemain.dart
```dart import 'package:dart_json_mapper/dart_json_mapper.dart'; import 'main.mapper.g.dart'; void main() { initializeJsonMapper(); // Data should be Pageablenews.json
```json { "page": 1, "pageSize": 10, "totalPages": 1, "totalCount": 2, "data": [ ... ], } ```When I try to do that, I get this error: