即使 JSON 格式正确,Flutter Dio 也会随机且不一致地导致 FormatException

问题描述 投票:0回答:1

Flutter Dio 包在解析服务器的响应时导致 FormatEXception。服务器返回 STATUS 200。我猜测这是 Dio 解码 JSON 时的内部原因。有什么提示吗? 必须强调的是,它导致异常的次数为 7/10。 3/10 次它正确解析没有问题。后端框架是Laravel。

JSON 响应采用以下格式

{
    "success": true,
    "responseMessage": "SILVER NOT ENOUGH ",
    "responseCode": 1117,
    "data": [
        {
            "item_id": 194,
            "silver": 2479.95,
            "name": "PUBG Mobile    60 UC",
            "description": "PUBG",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 195,
            "silver": 24930,
            "name": "PUBG Mobile 600 + 60 UC",
            "description": "PUBG",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 192,
            "silver": 12480,
            "name": "PUBG Mobile 300 + 25 UC",
            "description": "PUBG",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 102,
            "silver": 2850,
            "name": "FreeFire USD 1 (100 + 10 Diamonds)",
            "description": "FreeFire",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 104,
            "silver": 5700,
            "name": "FreeFire USD 2 (210 + 21 Diamonds)",
            "description": "FreeFire",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 103,
            "silver": 28500,
            "name": "FreeFire USD 10 (1080 + 108 Diamonds)",
            "description": "FreeFire",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 46,
            "silver": 29400.000000000004,
            "name": "Amazon US USD 10 (US)",
            "description": "Amazon US",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 61,
            "silver": 11460,
            "name": "Apple & iTunes Card US USD 4 (US)",
            "description": "Apple Card US",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 63,
            "silver": 14325.000000000002,
            "name": "Apple & iTunes Card US USD 5 (US)",
            "description": "Apple Card US",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 54,
            "silver": 5730,
            "name": "Apple & iTunes Card US USD 2 (US)",
            "description": "Apple Card US",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 155,
            "silver": 27300,
            "name": "Nintendo eShop US USD 10 (US)",
            "description": "Nintendo eShop US",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 201,
            "silver": 14100,
            "name": "Razer Gold 5$ Global",
            "description": "Razer Gold Pins",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 307,
            "silver": 2700,
            "name": "Jawaker 4250 Token",
            "description": "Jawaker 4250 Token",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 308,
            "silver": 13500,
            "name": "Jawaker 32500 Token",
            "description": "Jawaker 32500 Token",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 309,
            "silver": 27000,
            "name": "Jawaker 70000 Token",
            "description": "Jawaker 70000 Token",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 1129,
            "silver": 2820,
            "name": "Razer Gold - $1 (Global)",
            "description": "Razer Gold - USD 1 (Global)",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 1130,
            "silver": 5640,
            "name": "Razer Gold - $2 (Global)",
            "description": "Razer Gold - USD 2 (Global)",
            "photo": "",
            "disable": true
        },
        {
            "item_id": 133,
            "silver": 57000,
            "name": "Mobile Legends 1167 Diamonds",
            "description": "Mobile Legends",
            "photo": "",
            "disable": true
        }
    ]
}
json flutter response dio
1个回答
0
投票

您是否正确地将数据转换为模型类?看起来““silver”:2479.95”主要是一个整数,除了第一个之外。也许尝试将其转换为双精度?

© www.soinside.com 2019 - 2024. All rights reserved.