json - 如何在 http json 中更深一层?
问题描述
如何解开“数据”的 json或更深一层,以便可以将其正确存储在专辑类中?提前致谢!
{
"data": {
"id": 3,
"userId": 2,
"title": "Lorem ipsum"
}
}
获取请求:
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:activity/models/Album.dart';
Future<Album> fetchAlbum() async {
final response = await http.get('http://localhost:8000/album/1');
if (response.statusCode == 200) {
return Album.fromJson(json.decode(response.body)); // Values not assigned to Album
} else {
throw Exception('Failed to load album');
}
}
未分配值,因为顶级是 json 的“数据”
class Album {
final int userId;
final int id;
final String title;
Album({this.userId, this.id, this.title});
factory Album.fromJson(Map<String, dynamic> json) {
return Album(
userId: json['userId'],
id: json['id'],
title: json['title'],
);
}
}
解决方案
您可以使用它json.decode
来获取Map
并将其用作
代码片段Map
的参数Album.fromJson
Future<Album> fetchAlbum() async {
final response = await http.get('http://localhost:8000/album/1');
if (response.statusCode == 200) {
var responseData = json.decode(response.body);
return Album.fromJson(responseData["data"]);
} else {
throw Exception('Failed to load album');
}
}
推荐阅读
- javascript - 如何在反应中单击注销时重定向到登录页面
- javascript - 将 Firebase 元素映射为数组
- c - MISRA C 2012 - 规则 21.1 - 以下划线开头的宏
- php - 适用于 Android 的 Chrome:如何在网页上启用适合移动设备的 '
- javascript - 如何从 valueOf() 中获取确切的日期和时间?
- javascript - 在电子邮件中使用 Java 脚本
- vuejs2 - Vue.js 从 mixin 添加属性
- sql - Ms Sql Server 将数字列与字符串值进行比较
- jenkins - jenkins 将 .war 文件部署到 tomcat - TomcatManagerException
- php - 在 MySQL WHERE string LIKE string 中搜索字符串(用括号括起来)