Dart解析问题-[无构建值^可序列化的^]

时间:2019-04-16 13:15:45

标签: json serialization dart flutter deserialization

是的,好的人,

[已编辑:

在dartpad中运行

private static Map<String, Verbosity> stringMap = Arrays.stream(values())
                 .collect(Collectors.toMap(Enum::toString, Function.identity()));

返回

import 'dart:convert';
void main() {
  const String _json = '{"myListInt": [1]}';
  final Map<String, dynamic> _map = jsonDecode(_json);
  final List<int> _list = _map['myListInt'] as List<int>;
  _list.forEach((i) {
    String _s = i.toString();
    print(_s);
  });
}

以防我使用

Uncaught exception:
CastError: Instance of 'JSArray': type 'JSArray' is not a subtype of type 
'List<int>'

  final List<int> _list = List<int>.from(_map['myListInt'] as List<int>);

返回

List<int>.generate(_map['myListInt'].length, (i)=>_map['myListInt'][i] as int);

] 我在做什么错了?

提前谢谢

弗朗切斯科

2 个答案:

答案 0 :(得分:1)

代替此行

myListInt: List<int>.from(_map['myListInt'] as List<int>),

您可以使用

myListInt: List<int>.generate(_map['myListInt'].length, (i)=>_map['myListInt'][i] as int 

基本上不必强制转换整个列表,而必须逐个强制转换每个元素。

答案 1 :(得分:0)

好的,使用“作为迭代” 我希望有人会发现它有用

import 'dart:convert';
void main() {
  const String _json = '{"myListInt": [1]}';
  final Map<String, dynamic> _map = jsonDecode(_json);
  final List<int> _list=  List<int>.from(_map['myListInt'] as Iterable);
  _list.forEach((i) {
    String _s = i.toString();
    print(_s);
  });
}