【问题标题】:Change json data from local list to online file将 json 数据从本地列表更改为在线文件
【发布时间】:2019-11-20 14:42:50
【问题描述】:

我将此数据列表作为 String,我想将其存储在 JSON 文件中并再次将其称为 String 以将其保存在 列表, 但由于数据类型而引发错误

这里是代码

import 'package:project/models/Response.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
final body ='''
[
  {
    "urlToImage": "assets/images/spelt_noodles.png",
    "title": "Biona Organic Spelt Noodles",
    "price": 2.99,
    "weight": 250,
    "id": 1,
    "created_at": "2019-07-07 10:44:53",
    "updated_at": "2019-07-07 10:44:53"
  },
  {
    "urlToImage": "assets/images/spelt_spaghetti.png",
    "title": "Biona Organic Spelt Noodles",
    "price": 2.99,
    "weight": 250,
    "id": 2,
    "created_at": "2019-07-07 10:44:53",
    "updated_at": "2019-07-07 10:44:53"
  },
  {
    "urlToImage": "assets/images/spelt_noodles.png",
    "title": "Biona Organic Spelt Noodles",
    "price": 2.99,
    "weight": 250,
    "id": 3,
    "created_at": "2019-07-07 10:44:53",
    "updated_at": "2019-07-07 10:44:53"
  }
]''';

class ProductsRepository{


    List<Product>  fetchAllProducts() {

    var jsonB = (jsonDecode(body) as List).cast<Map<String, dynamic>>();
    var list = jsonB.map<Response1>((e) => Response1.fromJson(e)).toList();

     List<Product> items = [];

      for (var item in list) {
        items.add(new Product(item.urlToImage, item.title, item.price, item.price, item.id));
      }

    return items;

  }

我试过了

  var response;
  String data;
  Future<String> getData() {
    response = http.get('https://example.json');
    return data = json.decode(utf8.decode(response.bodyBytes));

  }

但它会引发错误, 那么如何通过http获取json文件并将其转换为字符串提供给jsonDecode(body)呢?

【问题讨论】:

  • 您可以用错误信息更新问题。

标签: android mysql json api flutter


【解决方案1】:

response.body 已经是一个字符串,你不需要做任何事情。

Future<String> getData() async {
  response = await http.get('https://example.json');
  return response.body;
}

【讨论】:

  • 是的,但是我在加载 json 文件时遇到了问题,它需要几秒钟才能下载,但颤振不会等待它,它会执行下一行代码并返回 String 作为 Null
  • 你的代码和我的例子的区别在于我的,getData是一个异步函数,我用await等待http.get完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 2021-10-08
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
相关资源
最近更新 更多