我得到了后端的响应:

   {"measurements": {
            "pm10": {
              "name": "pm10",
              "value": 20.8647,
              "unit": "µg/m³"
            },
             "pm25": {
              "name": "pm10",
              "value": 20.8647,
              "unit": "µg/m³"
            },
             "o2": {
              "name": "pm10",
              "value": 20.8647,
              "unit": "µg/m³"
            }

        },
   "station": {
        "city": "{cityName}",
        "name": "{locationName}",
        "latitude": "54.353336",
        "longitude": "18.635283"
    }
    }

这就是我此刻得到的:

class Pollutions {

    Pollutions.fromJsonMap(Map<String, dynamic> map):
                measurements = Measurements.fromJsonMap(map["measurements"]),
                station = Station.fromJson(map["station"]);

  Map<String, Pollution> measurements;
  Station station;

    Map<String, dynamic> toJson() {
        final data = Map<String, dynamic>();
        data['measurements'] = measurements == null ? null : measurements.jsonDecode(measurements);
        data['station'] = station == null ? null : station.toJson();
        return data;
    }
}

在测量值中,我可以得到其他值,但我不知道它们的名称,可能是O2、O3,而不仅仅是PM10等等.我能否解析此测量值以映射key-value,其中key将是PM10,类似于:map? map 的Pollutions.fromJsonMap种方法和toJson种方法应该是什么样子?

推荐答案

你可以通过使用dart:convertout-of-the-box解码器来简单地做到这一点.

import 'package:http/http.dart' as http;
import 'dart:convert';

final response = await http.get(someEndPoint);
final Map<String, dynamic> data = json.decode(response.body);

Dart相关问答推荐

日期时间时区反序列化

Flutter - 为什么滑块不会在 AlertDialog 中更新?

Flutter 中的 authStateChanges

Flutter 屏幕尺寸计算

Flutter Text 小部件中的 StrutStyle 是什么

如何在Dart中处理JSON

Flutter DataTable - 点击行

将Flutter的 PageView 与屏幕左侧对齐

在 Dart 中编写单元测试的最佳方式是什么?

如何在 Dart 中创建 StreamTransformer?

Dart:你如何让 Future 等待 Stream?

Dart - 将自纪元以来的毫秒数(UNIX 时间戳)转换为人类可读的时间

`FutureOr` 的目的是什么?

如何使异步 Dart 调用同步?

Dart - 如何对 Map 的键进行排序

如何在 Dart 中为 Completer.CompleteException(exception, stackTrace) 获取当前堆栈跟踪;

Null aware函数调用运算符

dart列表最小值/最大值

如何在 Dart 中获取时间戳?

如何在 Dart 中执行运行时类型判断?