gpt4 book ai didi

Dart JSON 解码器

转载 作者:行者123 更新时间:2023-12-05 00:47:48 28 4
gpt4 key购买 nike

令我惊讶的是,dart 没有内置的对象到 json 和 json 到对象的映射器。

我读到我们必须自己手动编写映射代码,这并不令人愉快。

无论如何,虽然我没有针对我的用例对其进行彻底测试,但我发现了 dart-exportable对我一半的要求很有帮助。

有什么推荐的 json 到对象解码的包吗?

最佳答案

您最好的选择是使用 Smoke图书馆。

它是 Mirrors 功能的一个子集,但同时具有基于 Mirrors 和基于 Codegen 的实现。它是由 PolymerDart 团队编写的,因此它与我们即将获得的“官方”一样接近。

在开发过程中,它会使用基于镜像的编码/解码;但对于发布,您可以创建一个小型转换器来生成代码。

Seth Ladd 创建了 a code sample here ,我extended slightly支持子对象:

abstract class Serializable {
static fromJson(Type t, Map json) {
var typeMirror = reflectType(t);
T obj = typeMirror.newInstance(new Symbol(""), const[]).reflectee;
json.forEach((k, v) {
if (v is Map) {
var d = smoke.getDeclaration(t, smoke.nameToSymbol(k));
smoke.write(obj, smoke.nameToSymbol(k), Serializable.fromJson(d.type, v));
} else {
smoke.write(obj, smoke.nameToSymbol(k), v);
}
});
return obj;
}

Map toJson() {
var options = new smoke.QueryOptions(includeProperties: false);
var res = smoke.query(runtimeType, options);
var map = {};
res.forEach((r) => map[smoke.symbolToName(r.name)] = smoke.read(this, r.name));
return map;
}
}

目前,Smoke 不支持获取泛型类型信息(例如支持 List);但是我在这里提出了一个案例:

https://code.google.com/p/dart/issues/detail?id=20584

在这个问题被实现之前,你想要的一个“好的”实现是不可行的;但我希望它能尽快实现;因为做像 JSON 序列化这样基本的事情有点依赖于它!

关于Dart JSON 解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615241/

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