将检索到的json转换为flutter中的自定义对象列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将检索到的json转换为flutter中的自定义对象列表相关的知识,希望对你有一定的参考价值。

我正在尝试从/至共享首选项保存和检索自定义对象列表。

这是我的保存功能

  save(String key, value) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString(key, json.encode(value));
print(json.encode(value));
  }

并且我正在保存产品列表:

import 'category.dart';
import 'image.dart';
import 'rating.dart';

class Product{
  int id;
  String name_en,
      name_ar,
      description_en,
      description_ar,
      original_price,
      stock,
      final_price;
  bool has_sale;
  Category category;
  Rating rating;
  Image main_image;

  Product(
      {this.main_image,
        this.name_en,
        this.name_ar,
        this.category,
        this.description_ar,
        this.description_en,
        this.final_price,
        this.has_sale,
        this.rating,
        this.original_price,
        this.stock});

  factory Product.fromJson(Map<String, dynamic> json) {
    return Product(
        main_image: json['main_image'] != null
            ? Image.fromJson(json['main_image'])
            : null,
        name_en: json['name_en'],
        name_ar: json['name_ar'],
        description_en: json['description_en'],
        description_ar: json['description_ar'],
        original_price: json['original_price'],
        final_price: json['final_price'],
        category: Category.fromJson(json['category']),
        rating: Rating.fromJson(json['rating']),
        has_sale: json['has_sale']
    );
  }

  Map<String, dynamic> toJson() => {
'main_image': main_image,
'name_en': name_en,
'name_ar': name_ar,
'description_en': description_en,
'description_ar': description_ar,
'original_price': original_price,
'final_price': final_price,
'category': category,
'rating': rating,
'has_sale': has_sale




 };

}

并且工作正常..这是我检索数据的功能

 read(String key) async {
final prefs = await SharedPreferences.getInstance();
return json.decode(prefs.getString(key));


}

我的问题在尝试将json转换为产品列表时发生,这是我的工作

  var productsFromShared = await sharedPref.read("product");
  var listNewProducts = productsFromShared as List;
  List<Product> list =
  listNewProducts.map((i) => Product.fromJson(i)).toList();

我错过了什么?

答案

我已从JSON字符串获取用户数据。请从中参考。

Future<UserData> getUserData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String data = prefs.getString("pre_user");

    if (data == null) {
      return null;
    } else {
      return UserData.fromJson(jsonDecode(data));
    }
  }

以上是关于将检索到的json转换为flutter中的自定义对象列表的主要内容,如果未能解决你的问题,请参考以下文章

为啥从 json 操作中检索到的数据显示为未定义?

如何在 Swift 5 中将文档转换为自定义对象?

如何在 C# 中使用添加的自定义标签将 JSON 转换为 XML

Flutter 将自定义堆叠对象转换为 json

在 Flutter 中将 JSON 转换为类似于 android 的 POJO(对象)

flutter 网络请求dio的简单使用以及请求头参数的自定义