将类对象转换为数据值flutter dart

rjjhvcjd  于 2023-02-20  发布在  Flutter
关注(0)|答案(2)|浏览(141)

这是我的JSON:

{
'malls' : [{'id':1 , 'name': 'salam'},{'id':2 , 'name': 'salam2'}]
}

这是我的建模JSON类:

class MALL {
  final int id;
  final String name;

  MALL({required this.id, required this.name});

  factory MALL.fromJson(Map<String, dynamic> data) {
    return MALL(id: data['id'], name: data['name']);
  }
}

class City {
  final List<MALL> malls;

  City({required this.malls});
  factory City.fromJson(Map<String, dynamic> data) {
    var list = data['malls'] as List;
    List<MALL> mallList = list.map((i) => MALL.fromJson(i)).toList();
    return City(malls: mallList);
  }
}

这是我的get方法:

Future<List<MALL>> get() async {
  var response = await http.get(Uri.parse(URL), headers: {"authorization": "Bearer ${token}", "Content-Type": "application/json"});
  var data = jsonDecode(response.body);
  City api = City.fromJson(data);
  return data['malls'];
}

我得到这个输出:

[Instance of 'MALL', Instance of 'MALL']

我想在输出中得到我的类示例的JSON。我如何将示例转换为我的数据?这意味着我想在输出中返回我的JSON,并且我可以在我的FutureBuilder中访问mall的键。

mwkjh3gx

mwkjh3gx1#

如果你想打印Class的响应,你可以重写toString方法来打印Class的响应。

class MALL {
  final int id;
  final String name;

  MALL({required this.id, required this.name});

  factory MALL.fromJson(Map<String, dynamic> data) {
    return MALL(id: data['id'], name: data['name']);
  }
  
  @override
  String toString() => "{ id : $id, name : $name}";
}

现在您将在控制台中看到结果。

gwo2fgha

gwo2fgha2#

在你的FutureBuilder里面你会得到购物中心的列表。那你必须使用循环或列表视图构建器来访问这些元素。
如果你想打印列表数据.你必须打印第一个元素
在您未来构建中加载数据时。

print(data.first.toString())

添加这行代码到你的malls类中

@override
String toString() => "{ id : $id, name : $name}";

相关问题