【问题标题】:Flutter json_serializable error: Unhandled Exception: type 'Null' is not a subtype of type 'String' in type castFlutter json_serializable 错误:未处理的异常:类型“Null”不是类型转换中“String”类型的子类型
【发布时间】:2021-09-22 07:55:48
【问题描述】:

我遇到了上述问题,我知道在我的数据中有些内容为空,例如 Diesel 的 leistungData 不包含任何内容,因此标题为空:

                "title":"Benzin",
                "leistungData":[
                   {
                      "title":"240 PS"
                   }
                ]
             },
             {
                "title":"Diesel",
                "leistungData":[
                   
                ]
             },

所以我知道“Null”不是“String”类型的子类型。但是如何更改下面的代码,以便保留这个 Json 结构?

    import 'leistungData.dart';


part 'treibstoffData.g.dart';

@JsonSerializable(explicitToJson: true)
class TreibstoffData {
  final String title;
  final List <LeistungData> leistungData;

  TreibstoffData(this.title, this.leistungData);

  factory TreibstoffData.fromJson(Map<String, dynamic> json)
  => _$TreibstoffDataFromJson(json);
  Map<String, dynamic> toJson() => _$TreibstoffDataToJson(this);
}

&这里是 LeistungData:

    import 'package:json_annotation/json_annotation.dart';

import 'unterscheidungsData.dart';

part 'leistungData.g.dart';

@JsonSerializable()
class LeistungData {
  final String title;

  LeistungData(this.title);

  factory LeistungData.fromJson(Map<String, dynamic> json)
  => _$LeistungDataFromJson(json);
  Map<String, dynamic> toJson() => _$LeistungDataToJson(this);
}

我希望我清楚并且没有忘记任何事情,如果我错过了什么就写信给我

【问题讨论】:

  • 你也能显示 TreibstoffDataFromJson 方法吗?
  • 认为我们现在已修复,但感谢您的意愿)
  • 嘿,谢谢你的回答,虽然另一个对我有用,但我喜欢默认值方法,因为你不必使用 ? & !运算符

标签: json flutter dart


【解决方案1】:

转换为可空列表。

将最终的List &lt;LeistungData&gt; leistungData; 替换为final List &lt;LeistungData&gt;? leistungData; 也可以试试final String? title ; 让我知道它是否无法解决错误。

【讨论】:

  • 感谢您的建议,仍然出现同样的错误,我应该将完整代码发给您吗?
  • 当然,那我就可以查了
  • 顺便说一句,您使用的是 freezed 吗?你也可以分享完整的json文件
  • 我现在修好了,改变了最后的字符串标题;部分也是最终字符串?标题;如果它按预期工作,我会进一步测试并及时更新,也许我会在测试过程中发现问题
  • 你能添加最后的字符串吗?您的答案中的标题,然后将其标记为已解决,还是您认为该解决方案存在潜在问题?
猜你喜欢
  • 2021-06-22
  • 2023-01-27
  • 2022-01-18
  • 2022-06-30
  • 2021-10-11
  • 2021-12-16
  • 1970-01-01
  • 2022-01-13
  • 2021-12-28
相关资源
最近更新 更多