Flutter toJson 缺少分号
Flutter toJson missing semicolon
我有以下型号 class。
@JsonSerializable()
class Login {
String? userName;
String? password;
Login({required this.userName, required this.password});
factory Login.fromJson(Map<String, dynamic> json) => _$LoginFromJson(json);
Map<String, dynamic> toJson() => _$LoginToJson(this);
}
生成零件文件。
Login _$LoginFromJson(Map<String, dynamic> json) => Login(
userName: json['userName'] as String?,
password: json['password'] as String?,
);
Map<String, dynamic> _$LoginToJson(Login instance) => <String, dynamic>{
'userName': instance.userName,
'password': instance.password,
};
当我尝试将其用于 post 至 api 时,请遵循以下代码
Future<void> loginUser(Login login) async => {
print(login.toJson().toString());
}
打印语句的结果(导致转换错误)
{userName: test, password: password}
期望有效的 json 到 post 是
{
"username": "string",
"password": "string"
}
错误信息
Error: DioError [DioErrorType.other]: Converting object to an encodable object failed: Instance of '_HashSet<String>'
从
中删除=>
Future<void> loginUser(Login login) async => {
print(login.toJson().toString());
}
至
Future<void> loginUser(Login login) async {
print(login.toJson().toString());
}
在第一个例子中,它是一个箭头函数,其中括号 { }
代表一个集合文字,因为它就在箭头后面,很像生成的 _$LoginToJson
函数,但没有描述集合的类型。
在第二个例子中,它是一个普通函数,括号 { }
定义了函数体。
您可能希望调用 jsonEncode
(import dart:convert;
),它接受一个值,例如 Map<String, dynamic>
并将其转换为 [=40 中的 String
=]格式。
更新打印语句如下:
print(jsonEncode(login.toJson()));
虽然生成的函数将对象解析为适合 JSON 的格式,但不会将其转换为实际的 String
。您需要使用 jsonEncode
对其进行编码。同样,在处理 JSON 响应时,您需要 jsonDecode
响应主体以获得 Map<String, dynamic>
结构,然后您可以将其传递给生成的 fromJson
函数。
我有以下型号 class。
@JsonSerializable()
class Login {
String? userName;
String? password;
Login({required this.userName, required this.password});
factory Login.fromJson(Map<String, dynamic> json) => _$LoginFromJson(json);
Map<String, dynamic> toJson() => _$LoginToJson(this);
}
生成零件文件。
Login _$LoginFromJson(Map<String, dynamic> json) => Login(
userName: json['userName'] as String?,
password: json['password'] as String?,
);
Map<String, dynamic> _$LoginToJson(Login instance) => <String, dynamic>{
'userName': instance.userName,
'password': instance.password,
};
当我尝试将其用于 post 至 api 时,请遵循以下代码
Future<void> loginUser(Login login) async => {
print(login.toJson().toString());
}
打印语句的结果(导致转换错误)
{userName: test, password: password}
期望有效的 json 到 post 是
{
"username": "string",
"password": "string"
}
错误信息
Error: DioError [DioErrorType.other]: Converting object to an encodable object failed: Instance of '_HashSet<String>'
从
中删除=>
Future<void> loginUser(Login login) async => {
print(login.toJson().toString());
}
至
Future<void> loginUser(Login login) async {
print(login.toJson().toString());
}
在第一个例子中,它是一个箭头函数,其中括号 { }
代表一个集合文字,因为它就在箭头后面,很像生成的 _$LoginToJson
函数,但没有描述集合的类型。
在第二个例子中,它是一个普通函数,括号 { }
定义了函数体。
您可能希望调用 jsonEncode
(import dart:convert;
),它接受一个值,例如 Map<String, dynamic>
并将其转换为 [=40 中的 String
=]格式。
更新打印语句如下:
print(jsonEncode(login.toJson()));
虽然生成的函数将对象解析为适合 JSON 的格式,但不会将其转换为实际的 String
。您需要使用 jsonEncode
对其进行编码。同样,在处理 JSON 响应时,您需要 jsonDecode
响应主体以获得 Map<String, dynamic>
结构,然后您可以将其传递给生成的 fromJson
函数。