gpt4 book ai didi

html - 我可以自动序列化 Dart 对象以通过 Web Socket 发送吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:27 27 4
gpt4 key购买 nike

我刚刚看到有一些用于运行 Dart 网络服务器的库,例如 Start .所以我在想这样的事情..如果客户端和服务器代码都是用 Dart 编写的,是否可以通过 websockets(或与此相关的普通 REST)发送“Dart 对象”,以便类型信息保留在另一端?或者我是否需要通过 JSON 或类似的方式序列化/反序列化?还是我想多了?

问候奥斯卡

最佳答案

您需要以某种方式序列化 Dart 对象。可以试试JSON,也可以试试重载的serialization package .

自定义 Dart 类没有完全自动的 JSON 序列化。您将需要添加自定义 toJson 序列化程序并创建某种 fromJson 构造函数。

例如如果你有一个 Person 类,你可以这样做:

import 'dart:json' as json;

class Person {
String name;
int age;

Person(this.name, this.age);

Person.fromJson(String json) {
Map data = json.parse(json);
name = data['name'];
age = data['age'];
}

Map toJson() {
return {'name': name, 'age': age};
}
}

注意:fromJson 只是一个约定。您需要以某种方式调用它,没有内置机制来获取任意 JSON 字符串并在您的自定义对象上调用正确的构造函数。

如上所述,序列化包更重,但功能更全。这是其文档中的示例:

 // uses the serialization package
var address = new Address();
address.street = 'N 34th';
address.city = 'Seattle';
var serialization = new Serialization()
..addRuleFor(address);
Map output = serialization.write(address);

 // uses serialization
var serialization = new Serialization()
..addRuleFor(address,
constructor: "create",
constructorFields: ["number", "street"],
fields: ["city"]);

关于html - 我可以自动序列化 Dart 对象以通过 Web Socket 发送吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com