当前位置: 首页 > 面试题库 >

如何在flutter中从json反序列化对象列表

孔经武
2023-03-14
问题内容

我正在使用dart包json_serializable进行json序列化。查看flutter文档,它显示了如何反序列化单个对象,如下所示:

Future<Post> fetchPost() async {
  final response =
  await http.get('https://jsonplaceholder.typicode.com/posts/1');

  if (response.statusCode == 200) {
  // If the call to the server was successful, parse the JSON
  return Post.fromJson(json.decode(response.body));
  } else {
    // If that call was not successful, throw an error.
    throw Exception('Failed to load post');
  }
}

但是,我对dart不够熟悉,无法弄清楚如何对项目列表而不是单个实例执行相同的操作。


问题答案:

好吧,您的服务将处理作为地图的响应正文,或相应地处理地图列表。根据您所拥有的代码,您要核算1件商品。

如果响应主体是可迭代的,那么,如果我正确理解了您的问题,那么您需要进行解析并进行相应处理。

例:

Iterable l = json.decode(response.body);
List<Post> posts = List<Post>.from(l).map((Map model)=> Post.fromJson(model)).toList();

其中posts是帖子列表。

编辑
:我想在这里添加清晰的注释。目的是解码返回的响应。下一步是将json对象的可迭代性转换为对象的实例。这是通过在您的类中创建fromJson方法来正确获取json并相应地实现它来完成的。下面是一个示例实现。

class Post {
  // Other functions and properties relevant to the class
  // ......
  /// Json is a Map<dynamic,dynamic> if i recall correctly.
  static fromJson(json): Post {
    Post p = new Post()
    p.name = ...
    return p
  }
}

这些天,我对Dart有点抽象,希望有一个更好的实用程序来完成需要完成的任务。所以我的语法可能还差一点,但这是伪代码。

编辑
在过去的某个时候,此功能的API有所更改。我不再使用Dart编程,因此很难测试其中的一些更新。话虽这么说,但在此较新版本的dart中似乎存在投放问题,并且我更新了以上答案。它接受可迭代对象并将其转换为发布列表,然后在该列表上进行映射。



 类似资料:
  • 我有一个简单的JSON语句,类型非常适合需要。像这样 或 我使用POJO类映射这个json字符串和pojo类代码是给bleow 我正在使用jaxb和jakson。我正在实现webservice来处理json语句,所以我使用bean类来映射json。但是当我使用映射这个json时,它会给出以下异常 org.codehaus.jackson.map.JsonMappingExcture:名称为"mbo

  • 为了确保在我的RESTful web服务中来回发送的数据不冗余,每个嵌套对象都只序列化了它的ID(消息的用户只序列化了用户ID,因为客户端和服务器都已经知道用户的所有详细信息)。 序列化工作正常,产生以下效果: 问题:反序列化不会生成仅具有其ID的嵌套对象。生成的反序列化嵌套对象为空。 以下是前面提到的消息和用户对象。序列化“策略”是从此处指定的第三个选项中使用的:如何仅序列化Jackson的子级

  • 我试图获取我的Web请求JSON输出并解析它。这是输出 我为这些结果创建了公共课程 当我尝试反序列化Record类并选择名称时,我从RootObject类获得名称。这是我的密码

  • 我在爪哇是新来的! 我的目标:我有收集的对象,让我保持任何类型的对象通过一些键(如地图)(把他们到它和从)。我可以向它添加任何类型的对象(例如,我可以添加MyClass的对象)。然后,我使用GSON序列化这个对象以JSON格式分离字符串(例如,我可以序列化这个字符串以分离文件)。当我想拿回某个对象时,我通过键从collection请求它,collection将对应的字符串反序列化到object对象

  • 问题内容: 我很好奇序列化和反序列化的方式。我使用关键字“ json”和“ tuple”进行搜索,但找不到所需的内容。 问题答案: 我通过和Json.net进行测试,测试代码如下。结果显示可序列化和可反序列化。因此,我可以在应用程序中使用它们。 测试代码 注释 在将序列化到字符串{“项目1”:“一”,“项目2”:“嘻嘻”,“项目3”:真正},并且它可以被反序列化回类型。

  • 有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio