当前位置: 首页 > 知识库问答 >
问题:

Flutter API调用使用超文本传输协议

范俊逸
2023-03-14

我尝试使用以下方法从Api获取json数据

Future<SubjectList> getsubjectList(
      String userId, String accountId) async {
    final response = await http
        .get(Uri.https(_baseUrl, 'v1/package/subject-details'), headers: {
      'Content-Type': 'application/json',
      'user-id': userId,
      'account-id': accountId,
    });
    SubjectList jsonresponse = json.decode(response.body);   //'_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'SubjectList'
    print('This is response =$jsonresponse');
    return jsonresponse;
  }

我将这个物体建模如下

class SubjectList {
    SubjectList({
        this.subject,
        this.score,
        this.progress,
    });

    String? subject;
    double? score;
    String? progress;

    factory SubjectList.fromMap(Map<String, dynamic> json) => SubjectList(
        subject: json["subject"],
        score: json["score"].toDouble(),
        progress: json["progress"],
    );

    Map<String, dynamic> toJson() => {
        "subject": subject,
        "score": score,
        "progress": progress,
    };
}

数据如下:

{
    "success": true,
    "data": [
        {
            "subject": "Grammar",
            "score": 57.17,
            "progress": "96.77%"
        },
        {
            "subject": "Maths",
            "score": 52.12,
            "progress": "73.08%"
        },
        {
            "subject": "EVS",
            "score": 55.75,
            "progress": "97.96%"
        },
        {
            "subject": "Social Studies",
            "score": -1,
            "progress": "-1%"
        },
        {
            "subject": "Hindi",
            "score": 51.36,
            "progress": "60.87%"
        },
        {
            "subject": "Vocabulary",
            "score": 62.55,
            "progress": "68.12%"
        },
]

当我尝试使用模型访问时,我收到错误“\u InternalLinkedHashMap”

共有1个答案

厉高逸
2023-03-14

改变这条线

SubjectList jsonresponse=json。解码(response.body)

像这样的东西

列表

您可以为响应本身创建一个类,并在其上执行fromMap。

 类似资料:
  • 我有一个带有nestjs后端rest api(在nodejs中)的角度(9)前端。我在后端调用的endpoint执行一些相当复杂的操作,大约需要2分钟才能响应。在前端,我使用subscribe订阅响应,如下所示: 问题是,在后端,它开始一次又一次地执行代码。请注意,它不会再次执行http调用(我可以从Developer tools中的“网络”选项卡中看到这一点),它一直处于挂起状态。如果我这样做,

  • 在owncloud相关网站和stackoverflow自身的以下链接中,所有相关信息都以不完整的形式呈现: 用户配置Api-Owncloud 我试着做一些非常简单的事情: > 我得到这样的输出: 开始处理凭据,首先它将存储在本地变量中 Hello Frank 您的密码是frankspassword failure 997未经授权 在owncloud中创建了一个新用户 我还尝试使用以下php脚本登录

  • 我正在使用oauth签名生成我的oauth签名,以便与woocommerce api连接。我遵循了woocommerce rest api文档中所述的所有步骤: 所需的参数是:oauth_consumer_密钥、oauth_时间戳、oauth_nonce、oauth_签名和oauth_签名方法。oauth_版本不是必需的,应该省略。OAuth nonce可以是消费者密钥唯一的任意随机生成的32个字

  • 我试图禁用我的AngularJS应用程序中的缓存,但它无法使用以下代码: 当我使用

  • 我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始

  • 我正在使用certbot为我的网站创建SSL,并使用Nginx进行服务。然而,即使我在nginx conf中更改服务器块并重新启动它,只有原来的http工作,而https将返回ERR_CONNECTION_TIMED_OUT。 我在互联网上尝试了很多方法,包括将服务器块一分为二,调整listen 443设置,添加服务器名称。。。但所有这些似乎都不起作用,使用url和https将返回ERR_CONN