Closed
Description
my json data:
{
"resultCode": "0",
"resultMessage": "success",
"data": {
"result": 5
}
}
my base_response.dart and its part
import 'package:json_annotation/json_annotation.dart';
part 'base_response.g.dart';
@JsonSerializable()
class BaseResponse<T> extends Object with _$BaseResponseSerializerMixin {
String resultCode;
String resultMessage;
@JsonKey(fromJson: _dataFromJson, toJson: _dataToJson)
T data;
BaseResponse(this.resultCode, this.resultMessage, this.data);
factory BaseResponse.fromJson(Map<String, dynamic> json) => _$BaseResponseFromJson<T>(json);
}
T _dataFromJson<T>(Map<String, dynamic> input) =>
input['value'] as T;
Map<String, dynamic> _dataToJson<T>(T input) =>
{'value': input};
part of 'base_response.dart';
BaseResponse<T> _$BaseResponseFromJson<T>(Map<String, dynamic> json) {
return new BaseResponse<T>(
json['resultCode'] as String,
json['resultMessage'] as String,
json['data'] == null
? null
: _dataFromJson(json['data'] as Map<String, dynamic>));
}
abstract class _$BaseResponseSerializerMixin<T> {
String get resultCode;
String get resultMessage;
T get data;
Map<String, dynamic> toJson() => <String, dynamic>{
'resultCode': resultCode,
'resultMessage': resultMessage,
'data': data == null ? null : _dataToJson(data)
};
}
my data class and its part
import 'package:json_annotation/json_annotation.dart';
part 'content.g.dart';
@JsonSerializable()
class Content extends Object with _$ContentSerializerMixin {
int result;
Content(this.result);
factory Content.fromJson(Map<String, dynamic> json) => _$ContentFromJson(json);
}
part of 'content.dart';
Content _$ContentFromJson(Map<String, dynamic> json) {
return new Content(json['result'] as int);
}
abstract class _$ContentSerializerMixin {
int get result;
Map<String, dynamic> toJson() => <String, dynamic>{'result': result};
}
then, when I use it like this:
var out = new BaseResponse<Content>.fromJson(jsonDecode(json));
print(out.resultCode); // <---- it's 0
print(out.resultMessage); // <---- it's success
print(out.data); // <---- it's null
why out.data
is null? Am I missing something?