【问题标题】:How do I get the value from nested locally stored json-file in Flutter?如何从 Flutter 中嵌套的本地存储的 json 文件中获取值?
【发布时间】:2022-11-24 08:39:57
【问题描述】:

我正在尝试使用 Flutter 从本地存储的 json 文件中获取嵌套值。

我可以获得“外部”值,但无法获得“内部”值。我在这里用谷歌搜索,但我仍然无法让它工作,所以非常感谢任何帮助。

我将代码放在沙箱中以使其更易于查看。 https://codesandbox.io/s/loving-thunder-meklbc?file=/lib/main.dart

如果你宁愿看这里,这是一些文件的样子:

JSON:

[{
    "id":184423,
    "created":"2022-11-18T09:32:56.000Z",
    "raw_data":[        
        {"measurement_id":18,"index":0,"substance":655,"pressure":20,"temperature":30.03},
        {"measurement_id":18,"index":1,"substance":648,"pressure":38,"temperature":30.03},
        {"measurement_id":18,"index":2,"substance":636,"pressure":90,"temperature":30.02},
        {"measurement_id":18,"index":3,"substance":623,"pressure":130,"temperature":30.05},
        {"measurement_id":18,"index":4,"substance":598,"pressure":147,"temperature":29.99}
        ]
    },
    {
        "id":184423,
        "created":"2022-11-19T09:32:56.000Z",
        "raw_data":[        
            {"measurement_id":18,"index":0,"substance":586,"pressure":160,"temperature":30.05},
            {"measurement_id":18,"index":1,"substance":564,"pressure":170,"temperature":29.99},
            {"measurement_id":18,"index":2,"substance":553,"pressure":173,"temperature":30},
            {"measurement_id":18,"index":3,"substance":544,"pressure":162,"temperature":30.02},
            {"measurement_id":18,"index":4,"substance":538,"pressure":164,"temperature":30.01}
            ]
        }
]

处理程序:

import 'dart:convert';

import 'package:flutter/services.dart' as rootbundle;
import '../model/usermodel.dart';

Future<List<UserModel>> readJsonData() async {
  final jsondata = await rootbundle.rootBundle.loadString('/userdata.json');

  final list = json.decode(jsondata) as List<dynamic>;

  //print(list);
  return list.map((e) => UserModel.fromJson(e)).toList();
}

模型:

// ignore_for_file: non_constant_identifier_names

class UserModel {
  late int? id, measurementId, index, substance, pressure;
  late double? temperature;

  UserModel(
    this.id,
    this.measurementId,
    this.index,
    this.substance,
    this.pressure,
    this.temperature,
  );

  UserModel.fromJson(Map<String, dynamic> json) {
    id = json["id"];
    measurementId = json['measurement_id'];
    index = json['index'];
    substance = json['substance'];
    pressure = json['pressure'];
    temperature = json['temperature'];
  }
}

【问题讨论】:

    标签: json flutter dart


    【解决方案1】:
    List<UserModel> models = [];
    for (var item in list) {
      models.addAll(item.map((e) => UserModel.fromJson(e['id'], e['raw_data'])));
    }
    return models;
    
    UserModel.fromJson(int id, Map<String, dynamic> json) {
      this.id = id; // parse json (raw_data)
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2020-11-29
      • 1970-01-01
      • 2020-08-25
      • 2021-12-24
      相关资源
      最近更新 更多