首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何(反)序列化对象列表?

如何(反)序列化对象列表?
EN

Stack Overflow用户
提问于 2018-03-09 04:15:38
回答 1查看 1.3K关注 0票数 2

我找到了一个JSON serialization and deserialization to objects in Flutter 的例子,但是如何使用一个人员列表来实现,比如:

代码语言:javascript
复制
[
  {
    "name": "John",
    "age": 30,
    "cars": [
      {
        "name": "BMW",
        "models": [
          "320",
          "X3",
          "X5"
        ]
      }
    ]
  },
  {
    "name": "John",
    "age": 30,
    "cars": [
      {
        "name": "Ford",
        "models": [
          "Fiesta",
          "Focus",
          "Mustang"
        ]
      }
    ]
  }
]

当我调用_person = serializers.deserializeWith(Person.serializer, JSON.decode(json));时,我得到这个错误:

代码语言:javascript
复制
The following _CastError was thrown attaching to the render tree:
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String' in type cast where
  _InternalLinkedHashMap is from dart:collection
  String is from dart:core
  String is from dart:core

我创建了一个周围的Persons类:

代码语言:javascript
复制
abstract class Persons implements Built<Persons, PersonsBuilder> {
  BuiltList<Person> get persons;

  Persons._();

  factory Persons([updates(PersonsBuilder b)]) = _$Persons;

  static Serializer<Persons> get serializer => _$personsSerializer;
}

并调用_person = serializers.deserializeWith(Persons.serializer, JSON.decode(json));,但错误是相同的。

如何(反)序列化Json对象列表?

EN

回答 1

Stack Overflow用户

发布于 2018-03-14 01:40:42

而不是

_person = serializers.deserializeWith(Person.serializer, JSON.decode(json));

试一试

_person = serializers.deserializeWith(Person.serializer, (JSON.decode(json) as List).first);

var personList = (JSON.decode(json) as List).map((j) => serializers.deserializeWith(Person.serializer, j)).toList();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49181724

复制
相关文章

相似问题

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