【发布时间】:2019-09-17 12:13:51
【问题描述】:
我想在我的颤振应用中解码服务器响应,所以这是我从服务器得到的 json 响应:
"{'UserId':'1','UserName':'sorena','Name':'behzad'}"
这是颤振代码:
class HomeState extends State<Home>{
Map user;
@override
void initState() {
super.initState();
getUser();
}
getUser() async {
var response = await http.get('http://samplename.com/user/1');
user = json.decode(response.body);
print(user['UserId']);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child : Text('hi')
)
);
}
}
当我只想在 getUser() 中打印 UserId 时,我收到此错误: (基本上我应该可以做到,对吧?因为我被另一个json响应使用了,没有问题)
E/flutter (28417): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: type 'String' is not a subtype of type 'Map<dynamic, dynamic>
我使用https://jsonformatter.curiousconcept.com 验证 json 响应,当我在问题中输入 json 响应时,它通过了 RFC 7159 标准测试但 RFC 4627 测试失败。
我再次将https://jsonformatter.curiousconcept.com 用于https://jsonplaceholder.typicode.com 中的json 响应示例,两个测试都通过了,json 响应在我的应用程序中按预期工作。它给你任何线索吗?
那么为什么我不能解码这个响应呢?在此先感谢:)
【问题讨论】:
-
您的代码运行良好。错误一定是别的东西。我可以看看你的完整代码吗?
-
我猜是json响应有问题,你不这么认为吗?
-
我使用jsonformatter.curiousconcept.com 来验证 json 响应,当我在问题中输入 json 响应时,它通过了 RFC 7159 标准测试但 RFC 4627 测试失败。
-
我再次将jsonformatter.curiousconcept.com 用于jsonplaceholder.typicode.com 中的json 响应示例,并且两个测试都通过了,并且json 响应在我的应用程序中按预期工作。它给你任何线索吗?
-
您上面发布的 json 不正确。标签名称(例如
UserName)必须是双引号("UserName")而不是单引号('UserName')。请使用实际的 JSON 更新问题。
标签: android json api dart flutter