在Dart和Java之间共享类型

时间:2013-06-13 14:22:57

标签: java json dart data-transfer

是否有可能至少在数据传输层面上整合这两个世界? 假设我有通过Spring WebMVC REST端点提供的Java对象,而我的Dart客户端使用AJAX访问这些资源。如果Dart客户端也知道传输类型,那将是很好的,所以我不必同步相同类型定义的Dart和Java版本,但如果客户端上的数据访问,IDE可能会给我建议和错误方无效。


修改

我正在尝试做的更多解释,因为我似乎不够清楚:

  • 在Java方面,我定义了一个由Spring WebMVC + Jackson转换为JSON的bean。所以转移单位IS已经是JSON。我可以使用Dart动态轻松访问数据,但这不是我想要做的。
  • 我想将检索到的数据解析为Dart类,因为它原来是原始Java bean的类定义的复制品。查看Dart网站上的JsonObject's explanation,尤其是Language抽象类。这正是我现在正在做的事情。我正在定义一个抽象类,它定义了我从服务器中检索的JSON数据。这样,如果我访问非现有字段或执行不兼容的强制转换等,Dart可能会出现语法错误。当然,这仍然可以产生解析错误,但之后我可以以类型化方式处理数据。
  • 我的问题是要实现这一点,我必须手动同步Java端的数据bean的类定义和Dart端的抽象类定义。我想知道是否有人正在创建类似代码生成器的东西,它从Java类定义中创建一个Dart类定义。

1 个答案:

答案 0 :(得分:1)

您要求使用编辑器功能,这会导致编辑器性能下降。对于任何此类功能,编辑器可能需要为Java对象构建/维护对象图/语法树(这将在Java世界中使用AST),然后将其与Dart的语法树进行比较。

另外,不同的语言将提出相同的请求示例C#,Ruby等。在性能限制内似乎没有任何理智的方法来验证来自不同编程世界的对象。

我可以从下面的stackoverflow q / a中借一些更多关于为什么它更简单地使用JSON / XML而不是任何其他方式在java / c#world和dart world之间交换数据的原因 - \

  1. How does Java's serialization work and when it should be used instead of some other persistence technique?
  2. Read a BigInteger serialized from Java into C#