Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart JSON解码器_Dart - Fatal编程技术网

Dart JSON解码器

Dart JSON解码器,dart,Dart,我很惊讶dart没有内置的json对象映射器和json对象映射器 我读到我们必须自己手工编写映射代码,这很不愉快 无论如何,尽管我还没有针对我的用例对它进行彻底的测试,但我发现它对我的一半需求非常有用 有没有关于json到对象解码的建议包?我还没有时间完成它,但dartson目前正在使用镜像。不过,更好的解决方案是在编译为JavaScript时使用转换器 您最好的选择是使用库 它是镜像功能的一个子集,但同时具有基于镜像和基于Codegen的实现。它是由Polymardart团队编写的,因此它与我

我很惊讶dart没有内置的json对象映射器和json对象映射器

我读到我们必须自己手工编写映射代码,这很不愉快

无论如何,尽管我还没有针对我的用例对它进行彻底的测试,但我发现它对我的一半需求非常有用


有没有关于json到对象解码的建议包?

我还没有时间完成它,但dartson目前正在使用镜像。不过,更好的解决方案是在编译为JavaScript时使用转换器

您最好的选择是使用库

它是镜像功能的一个子集,但同时具有基于镜像和基于Codegen的实现。它是由Polymardart团队编写的,因此它与我们将要看到的“官方”非常接近

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

Seth Ladd已创建,我希望它支持子对象:

抽象类可序列化{
静态fromJson(类型t,映射json){
var typeMirror=反射类型(t);
T obj=typeMirror.newInstance(新符号(“”,const[])。reflectee;
forEach((k,v){
if(v是Map){
var d=smoke.getDeclaration(t,smoke.nameToSymbol(k));
write(obj,smoke.nameToSymbol(k),Serializable.fromJson(d.type,v));
}否则{
smoke.write(obj,smoke.nameToSymbol(k),v);
}
});
返回obj;
}
映射到JSON(){
var options=新烟雾。查询选项(includeProperties:false);
var res=smoke.query(运行时类型,选项);
var-map={};
res.forEach((r)=>map[smoke.symbolToName(r.name)]=smoke.read(this,r.name));
返回图;
}
}
目前,不支持在Smoke中获取泛型类型信息(如支持列表);但我在这里提出了一个案例:


在这个问题得到实施之前,你想要的“良好”实施是不可行的;但我希望它能很快实施;因为做一些像JSON序列化这样基本的事情有点取决于它

飞镖:转化成飞镖;一些例子@Amadan谢谢,但我正在寻找json字符串到对象解码器。类似于Java的Jackson库。dart导出不反对json字符串编码,但没有解码功能。哦。好吧,误解了。用
dart:mirrors
构建一些通用的东西应该不难:对于对象中的每个键值,看看该对象是否有一个共同响应的setter(或变量?),如果有,用该值递归函数的结果进行设置。下面是关于这个主题的扩展讨论(不仅仅是JSON),也许Dart也有一些问题。镜像在构建到JavaScript时会导致问题(代码膨胀)。Dart没有全局唯一类名(名称空间),这会导致查找要反序列化的类时出现问题。Dart忽略了泛型类动态实例化的一些功能。还有一些工作要做。