首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从嵌套的本地存储的json-文件中获取值?

如何从嵌套的本地存储的json-文件中获取值?
EN

Stack Overflow用户
提问于 2022-11-24 00:03:03
回答 2查看 32关注 0票数 1

我试图从本地存储的json文件中获得嵌套值。

我可以得到“外部”值,但我还没有得到“内部”值。我在这里搜索和搜索,但我仍然无法使它工作,所以任何帮助都是非常感谢的。

我把代码放在沙箱里,以便更容易看到。https://codesandbox.io/s/loving-thunder-meklbc?file=/lib/main.dart

如果您更愿意看这里,这就是一些文件的样子:

杰森:

代码语言:javascript
复制
[{
    "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":19,"index":0,"substance":586,"pressure":160,"temperature":30.05},
            {"measurement_id":19,"index":1,"substance":564,"pressure":170,"temperature":29.99},
            {"measurement_id":19,"index":2,"substance":553,"pressure":173,"temperature":30},
            {"measurement_id":19,"index":3,"substance":544,"pressure":162,"temperature":30.02},
            {"measurement_id":19,"index":4,"substance":538,"pressure":164,"temperature":30.01}
            ]
        }
]

处理程序:

代码语言:javascript
复制
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();
}

模型:

代码语言:javascript
复制
// 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'];
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-24 01:31:56

代码语言:javascript
复制
class UserModel {
  UserModel(this.id, this.raw_data);

  /// Creates a UserModel from Json map
  factory UserModel.fromJson(Map<String, dynamic> json) => UserModel(
        json['id'] as int?,
        (json['raw_data'] as List<dynamic>?)
            ?.map((e) => Data.fromJson(e as Map<String, dynamic>))
            .toList(),
      );

  final int? id;
  final List<Data>? raw_data;
}

//Data 

class Data {
  Data(
    this.measurement_id,
    this.index,
    this.substance,
    this.pressure,
    this.temperature,
  );

  final int? measurement_id;
  final int? index;
  final int? substance;
  final int? pressure;
  final double? temperature;

  /// Creates a Data from Json map
  factory Data.fromJson(Map<String, dynamic> json) => Data(
      json['measurement_id'] as int?,
      json['index'] as int?,
      json['substance'] as int?,
      json['pressure'] as int?,
      (json['temperature'] as num?)?.toDouble(),
    );
}
票数 2
EN

Stack Overflow用户

发布于 2022-11-24 00:15:27

代码语言:javascript
复制
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)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74554237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档