Flutter:如何正确读取 JSON 中的字段?
Posted
技术标签:
【中文标题】Flutter:如何正确读取 JSON 中的字段?【英文标题】:Flutter: How to properly read a field from a JSON? 【发布时间】:2021-11-04 13:28:01 【问题描述】:请检查以下颤振代码
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert' as convert;
import 'dart:io';
class UserService with ChangeNotifier
NavLinks _navLinks = NavLinks();
late User _user;
Future<int> saveUser(User user, String authToken) async
print(convert.json.encode(user.toJson()));
int responsetag = 0;
try
await http.post(Uri.parse(_navLinks.saveUser()),
body: convert.json.encode(user.toJson()),
headers:
"Accept": "application/json",
"content-type": "application/json",
HttpHeaders.authorizationHeader: "Bearer $authToken"
).then((http.Response response)
final int statusCode = response.statusCode;
print("RESPONSE: " + response.body);
print("STATUS CODE: " + statusCode.toString());
if (statusCode < 200 || statusCode > 400)
throw new Exception("Error while fetching data");
else
Map<String, dynamic> data = convert.jsonDecode(response.body);
responsetag = int.parse(data["insertId"]);
);
return responsetag;
catch (error)
throw (error);
在这里我需要提取insertId
,将其转换为int 并传递过去。但我总是以错误[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Exception: type 'int' is not a subtype of type 'String'
告终。
这里有什么问题?
【问题讨论】:
我不认为错误来自这里,你在哪里使用这个号码?错误来自 UI,我认为它是某个地方的 Text 小部件。分享该代码。 @Benyamin:嗯,它用在一个代码行中,除了这个int userid = await userService.saveUser(user, authToken);
此错误来自 UI,这意味着您已将整数值传递给期望字符串值的小部件,您应该对其使用 toString() 方法,错误来自 UI。
你能提供一些示例数据/响应
【参考方案1】:
根据您的代码data["insertId"]
应该是一个字符串。
如果data["insertId"]
是一个字符串,
responsetag = int.parse(data["insertId"]);
如果data["insertId"]
是一个整数,
responsetag = data["insertId"];
【讨论】:
谢谢。你谈到了这一点。这是一个 int,所以第二行代码确实有效【参考方案2】:尝试改变这一点:
responsetag = int.parse(data["insertId"]);
到这里
responsetag = int.parse(data["insertId"].toString());
【讨论】:
以上是关于Flutter:如何正确读取 JSON 中的字段?的主要内容,如果未能解决你的问题,请参考以下文章