Dart flutter - не могу распарсить весь Json объект постоянно выдает ошибку
запрос и возврат responsa
Future<List<TriggerResultModel>> trigger(
triggerRequestModel) async {
SharedPreferences localStorage = await SharedPreferences.getInstance();
String? auth = localStorage.getString('auth');
String? apiUrl = localStorage.getString('url');
TriggerRequestModel triggerRequestModel =
TriggerRequestModel(auth_triger: '${auth}');
Uri url = Uri.parse('${apiUrl}');
final response = await http.post(
url,
headers: {"Content-Type": "application/json-rpc"},
body: jsonEncode(triggerRequestModel.toJson()),
);
if (response.statusCode == 200) {
var data = json.decode(response.body);
List<TriggerResultModel> triggerResult =
(TriggerResponseModel.fromJson(data).triggerResult);
return triggerResult;
} else {
throw Exception('failed can\'t get Trigger');
}
}
вот json который я получаю
{
"jsonrpc": "2.0",
"result": [
{
"triggerid": "16996",
"description": "Low Battery Voltage (<11.75V)",
"value": "0",
"priority": "1",
"manual_close": "0",
"hosts": [
{
"hostid": "10537",
"name": "PLHK UPS Vagi1",
"status": "0"
}
],
"lastEvent": {
"eventid": "35410346",
"source": "0",
"object": "0",
"objectid": "16996",
"clock": "1626870410",
"value": "0",
"acknowledged": "0",
"ns": "255248404",
"name": "Low Battery Voltage (<11.75V)",
"severity": "0"
}
}
]
}
есть четыре класса Response, Result, Hosts, LastEvent три проходят хорошо и с выводом проблем нет и только LastEvent выдает ошибку
expected a value of type 'map<string, dynamic>, but got one of type 'list<dynamic>'
я использую JsonSerializable и вот мой класс Result
`@JsonSerializable()
class TriggerResultModel {
@JsonKey(name: 'triggerid')
final String triggerid;
@JsonKey(name: 'description')
final String description;
@JsonKey(name: 'priority')
final String priority;
@JsonKey(name: 'value')
final String value;
@JsonKey(name: 'manual_close')
final String manual_close;
@JsonKey(name: 'hosts')
final List<TriggerHostsModel> triggerHosts;
@JsonKey(name: 'lastEvent')
final TriggerLastEventModel triggerLastEvent;
TriggerResultModel({
required this.triggerid,
required this.description,
required this.value,
required this.priority,
required this.manual_close,
required this.triggerHosts,
required this.triggerLastEvent,
});
factory TriggerResultModel.fromJson(Map<String, dynamic> json) => _$TriggerResultModelFromJson(json);
Map<String, dynamic> toJson() => _$TriggerResultModelToJson(this);
}
а вот и LastEvent
@JsonSerializable()
class TriggerLastEventModel {
@JsonKey(name: 'eventid')
String eventid;
@JsonKey(name: 'source')
String source;
@JsonKey(name: 'object')
String object;
@JsonKey(name: 'objectid')
String objectid;
@JsonKey(name: 'clock')
String clock;
@JsonKey(name: 'value')
String value;
@JsonKey(name: 'acknowledged')
String acknowledged;
@JsonKey(name: 'ns')
String ns;
@JsonKey(name: 'name')
String name;
@JsonKey(name: 'severity')
String severity;
TriggerLastEventModel({
required this.eventid,
required this.source,
required this.object,
required this.objectid,
required this.clock,
required this.value,
required this.acknowledged,
required this.ns,
required this.name,
required this.severity,
});
factory TriggerLastEventModel.fromJson(Map<String, dynamic> json) => _$TriggerLastEventModelFromJson(json);
Map<String, dynamic> toJson() => _$TriggerLastEventModelToJson(this);
}
я еще новичок в flutter и не знаю все тонкости но эта проблема мне уже очень надоела я не понимаю почему только этот фрагмент Json не хочет принимать
кстати я заметил что проблема "ожидается Map <String, dynamic> а приходит List<dynamic>" когда я меняю класс LastEvent на List<LastEvent> то проблема просто меняется на "ожидается List<dynamic> а приходит _JsonMap"