我发现由于JSON在哈希和对象之间没有区别,我可以绕过总是坚持使用dto类的“法则”,而是返回“动态”哈希映射或列表hashmaps,它将JSON序列化为hash / es,稍后javascript将被视为普通对象。
当然,这并不总是适用,但是有些用例你不能真正保证返回数据的状态(什么不存在,某些道具可能存在,其他可能不存在)。这将花费我一些以“java”方式进行的抽象。另外,最后,JavaScript甚至不关心返回对象的原始类是什么。
这一般是不好的做法吗?
答案 0 :(得分:3)
通常在将Java对象序列化为JSON时,因为您正在进行AJAX调用并接收响应。通常,对于处理该响应的javascript代码,它必须采用某种类型的一致格式la {user:{name:steve, favoritecolor:purple}}
等。使用java类来表示而不是vanilla hashmap会使您获得一致性。您向JSON的消费者保证他们可以依赖其内容,因为它将与DTO具有相同的字段。它与你不会放弃java程序中的类而转而使用一堆HashMaps的原因相同。
答案 1 :(得分:0)
当Java业务代码中的所有方法都只接受HashMaps时,真正的问题就出现了; D 但是,如果您只有一个小应用程序,我会考虑定义接口(而不是类),并在运行时使用实现这些接口的代理API类生成,但使用HashMap而不是编写普通类。 请参阅:http://download.oracle.com/javase/1.3/docs/guide/reflection/proxy.html