Flutter请求API遇编码错误:无法将Null转为可编码对象
问题解决:JSON序列化Null值失败的错误
核心问题
你代码里的错误原因很直接:你写的是大写的Null(这是Dart的类型名),而不是表示空值的小写null常量。json.encode无法序列化类型标识符,所以抛出了转换失败的异常。
修正后的代码
把所有大写的Null替换成小写的null即可:
final response = await http.post(Uri.parse('http://"api"/api/createPin'), body: json.encode({ 'location': null, 'description': null, 'qrcode': null, 'ttl': null, 'tier': null, 'type': null, 'user': null, 'images': null, 'viewable_users': null }), );
额外优化建议
如果你的API允许省略这些可选字段(而不是必须传null值),可以直接去掉这些键值对,减少不必要的请求内容:
final response = await http.post(Uri.parse('http://"api"/api/createPin'), body: json.encode({}), // 空对象 );
这样既符合API的null允许规则,也更简洁高效。
内容的提问来源于stack exchange,提问作者Loftie Fourie
相关产品推荐
相关产品推荐

