gpt4 book ai didi

json - 如何继续在 flutter 中接收 JSON 数组并解析它?

转载 作者:IT王子 更新时间:2023-10-29 06:47:41 27 4
gpt4 key购买 nike

我正在尝试从 Web 服务 URL 获取 JSON 数组并在 JSON 中解析它。问题是我正在关注的教程显示接收一个 JSOn obj 并解析它,但我需要知道如何接收 JSON 数组并解析它。下面是我正在处理的代码,我卡住了。

型号

class Fact {
int id;
int fact_id;
String fact;
String image;
String reference;

Fact(this.id, this.fact_id, this.fact, this.image, this.reference);

Fact.fromJson(Map<String, dynamic> json)
: id = json['id'],
fact_id = json['fact_id'],
fact = json['fact'],
image = json['image'],
reference = json['reference'];

Map<String, dynamic> toJson() =>
{
'id' : id,
'fact_id': fact_id,
'fact': fact,
'image': image,
'reference': reference,
};
}

我不知道如何为我从网络服务获得的事实数组编写此代码。

事实下载管理器

class FactsManager {
var constants = Constants();

fetchFacts() {
final lastFactId = 0;
var fetchRequestUrl = constants.fetch_facts_url;

if (lastFactId == 0) {
fetchRequestUrl = fetchRequestUrl + "?count=" + constants.firstTimePostCount.toString();
} else {
fetchRequestUrl = fetchRequestUrl + "?count=" + constants.firstTimePostCount.toString() + "&last_id=" + lastFactId.toString();
}
Future<List<Fact>> fetchPost() async {
final response = await http.get(fetchRequestUrl);

if (response.statusCode == 200) {
return List<Fact>
}
}
}
}

我正在尝试解析的示例数据。

[
{
"id": "407",
"fact": "Monsanto once tried to genetically engineer blue cotton, to produce denim without the use of dyes, reducing the pollution involved in the dyeing process. ",
"reference": null,
"image": "http:\/\/quickfacts.me\/wp-content\/uploads\/2015\/06\/fact492.png",
"fact_id": "1"
},
{
"id": "560",
"fact": "You can count from zero to nine hundred ninety-nine without ever having to use the letter \"a\" ",
"reference": null,
"image": "http:\/\/quickfacts.me\/wp-content\/uploads\/2015\/06\/fact04.png",
"fact_id": "2"
},
{
"id": "564",
"fact": "In order to keep the project a secret, the British army used the innocuous name \"mobile water carriers\" for a motorized weapons project - which is the reason we call them \"tanks\". ",
"reference": null,
"image": "http:\/\/quickfacts.me\/wp-content\/uploads\/2015\/06\/fact116.png",
"fact_id": "3"
},
{
"id": "562",
"fact": "In 2010 the mummified corpse of Sogen Kato, thought to be Tokyo's oldest man, was found in his bedroom by government officials. He had actually died in 1978. ",
"reference": null,
"image": "http:\/\/quickfacts.me\/wp-content\/uploads\/2015\/06\/fact216.png",
"fact_id": "4"
},
{
"id": "566",
"fact": "In 1927 the US Supreme Court ruled it constitutional for the government to forcefully sterilize mentally handicapped people ",
"reference": null,
"image": "http:\/\/quickfacts.me\/wp-content\/uploads\/2015\/06\/fact316.png",
"fact_id": "5"
}
]

最佳答案

您可以执行以下操作:

String receivedJson = "... Your JSON string ....";
List<dynamic> list = json.decode(receivedJson);
Fact fact = Fact.fromJson(list[0]);

无论如何,您必须在您的 json 字符串和您制作的 Fact 类中考虑以下内容:

  • 在 json 字符串中,id 和 fact_id 是字符串,您将它们视为 int。您要么更改 json 要么更改 Fact 类
  • json 字符串中的一些字符串会产生错误,因为它们有额外的引号,这会混淆解码器。

作品的json字符串如下:

String receivedJson = """
[
{
"id": 407,
"fact": "Monsanto once tried to genetically engineer blue cotton, to produce denim without the use of dyes, reducing the pollution involved in the dyeing process. ",
"reference": null,
"image": "http:\/\/quickfacts.me\/wp-content\/uploads\/2015\/06\/fact492.png",
"fact_id": 1
}
]
""";

关于json - 如何继续在 flutter 中接收 JSON 数组并解析它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com