Как преобразовать данные объекта «Моя карта» в список?

#api #flutter #object #charts #flutter-dependencies

#API #флаттер #объект #Диаграммы #зависимости от флаттера

Вопрос:

Я пытаюсь изменить свой объект Map на list в Flutter, но я просто не знаю, где изменить код. Я попытался изменить его в файле диаграммы и файле модели, но это всегда выдает мне ошибку.

Вот как выглядит мой API:

 {
    "1": [
        {
            "tracked_at": "2020-11-29T17:33:42.000000Z",
            "fuel": 71.05,
            "level": 2.4867087,
            "volume": 41671.1
        },
        {
            "tracked_at": "2020-11-30T01:41:41.000000Z",
            "fuel": 70.04,
            "level": 2.451534,
            "volume": 41031.36
        },
        {
            "tracked_at": "2020-11-30T01:44:05.000000Z",
            "fuel": 68.47,
            "level": 2.396358,
            "volume": 40015.56
        },
        {
            "tracked_at": "2020-11-30T01:46:47.000000Z",
            "fuel": 66.89,
            "level": 2.341182,
            "volume": 38985.96
        },
        {
            "tracked_at": "2020-11-30T01:49:23.000000Z",
            "fuel": 65.31,
            "level": 2.286006,
            "volume": 37943.9
        },
 ],
    "2": [
        {
            "tracked_at": "2020-11-30T01:37:17.000000Z",
            "fuel": 70.71,
            "level": 2.47481784,
            "volume": 41455.55
        },
        {
            "tracked_at": "2020-11-30T01:42:29.000000Z",
            "fuel": 69.06,
            "level": 2.41724224,
            "volume": 40401.74
        },
        {
            "tracked_at": "2020-11-30T01:44:33.000000Z",
            "fuel": 67.52,
            "level": 2.3630534400000003,
            "volume": 39395.65
        }
]
}
 

А вот как выглядит моя модель:

 import 'dart:convert';

Map<String, List<TankPing>> tankPingFromJson(String str) => Map.from(json.decode(str)).map((k, v) => MapEntry<String, List<TankPing>>(k, List<TankPing>.from(v.map((x) => TankPing.fromJson(x)))));

String tankPingToJson(Map<String, List<TankPing>> data) => json.encode(Map.from(data).map((k, v) => MapEntry<String, dynamic>(k, List<dynamic>.from(v.map((x) => x.toJson())))));

class TankPing {
    TankPing({
        this.trackedAt,
        this.fuel,
        this.level,
        this.volume,
    });

    DateTime trackedAt;
    double fuel;
    double level;
    double volume;

    factory TankPing.fromJson(Map<String, dynamic> json) => TankPing(
        trackedAt: json["tracked_at"] == null ? null : DateTime.parse(json["tracked_at"]),
        fuel: json["fuel"] == null ? null : json["fuel"].toDouble(),
        level: json["level"] == null ? null : json["level"].toDouble(),
        volume: json["volume"] == null ? null : json["volume"].toDouble(),
    );

    Map<String, dynamic> toJson() => {
        "tracked_at": trackedAt == null ? null : trackedAt.toIso8601String(),
        "fuel": fuel == null ? null : fuel,
        "level": level == null ? null : level,
        "volume": volume == null ? null : volume,
    };
}
 

Буду признателен за любую помощь в том, где изменить и как изменить мою карту на список.

Ответ №1:

Вы можете использовать этот веб-сайт https://javiercbk.github.io/json_to_dart / чтобы преобразовать json в dart. Он автоматически преобразуется для меня. помимо этого вы можете использовать различные плагины для достижения результатов.

  1. https://plugins.jetbrains.com/plugin/11460-json2dart
  2. https://marketplace.visualstudio.com/items?itemName=quicktype.quicktype

Комментарии:

1. Привет, я преобразовал JSON в объект dart, используя quicktype.io . Но прямо сейчас мне нужно преобразовать объект моей карты в объект списка. И прямо сейчас я не знаю, где написать этот код. Есть идеи, где написать код и как его изменить?

2. Карты и списки разные. Вы можете разделить их с помощью ключей и значений.