json - Flutter - 使用父集解析 Json
问题描述
我可以解析我的代码 json 文件,如下所示。它工作正常:
[
{
"albumId": 1,
"id": 1,
"title": "Accusamus beatae ad facilis cum similique qui sunt",
"url": "https://via.placeholder.com/600/92c952",
"thumbnailUrl": "https://via.placeholder.com/150/92c952",
"publishDate": "2021-03-12"
},
{
"albumId": 1,
"id": 2,
"title": "Reprehenderit est deserunt velit ipsam",
"url": "https://via.placeholder.com/600/771796",
"thumbnailUrl": "https://via.placeholder.com/150/771796",
"publishDate": "2021-03-12"
}
]
但我需要更新我的 json 文件才能显示来自特定父级的数据。在此示例中:位置 1 或位置 2。
{
"position1":[
{
"albumId": 1,
"id": 1,
"title": "Accusamus beatae ad facilis cum similique qui sunt",
"url": "https://via.placeholder.com/600/92c952",
"thumbnailUrl": "https://via.placeholder.com/150/92c952",
"publishDate": "2021-03-12"
},
{
"albumId": 1,
"id": 2,
"title": "Reprehenderit est deserunt velit ipsam",
"url": "https://via.placeholder.com/600/771796",
"thumbnailUrl": "https://via.placeholder.com/150/771796",
"publishDate": "2021-03-12"
}
],
"position2":[
{
"albumId": 1,
"id": 1,
"title": "Accusamus beatae ad facilis cum similique qui sunt",
"url": "https://via.placeholder.com/600/92c952",
"thumbnailUrl": "https://via.placeholder.com/150/92c952",
"publishDate": "2021-03-12"
},
{
"albumId": 1,
"id": 2,
"title": "Reprehenderit est deserunt velit ipsam",
"url": "https://via.placeholder.com/600/771796",
"thumbnailUrl": "https://via.placeholder.com/150/771796",
"publishDate": "2021-03-12"
}
]
}
我的代码如下所示。我应该怎么做才能仅列出来自 ex: position1 的子项。
Future<List<Photo>> fetchPhotos(http.Client client) async {
final response = await client
.get(Uri.parse('https://jsonplaceholder.typicode.com/photos'));
return compute(parsePhotos, response.body);
}
// A function that converts a response body into a List<Photo>.
List<Photo> parsePhotos(String responseBody) {
final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>();
return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}
和
body: FutureBuilder<List<Photo>>(
future: fetchPhotos(http.Client()),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? PhotosList(photos: snapshot.data!)
: Center(child: CircularProgressIndicator());
},
),