POJO marshaller/demarshaller:JAX-RS JSON与GWT客户端JSON匹配

POJO marshaller/demarshaller:JAX-RS JSON与GWT客户端JSON匹配,gwt,jaxb,jax-rs,jackson,jettison,Gwt,Jaxb,Jax Rs,Jackson,Jettison,我正在使用Resteasy和GWT。由于某些原因,正如许多其他人有类似的动机一样,我没有将GWT-RPC用于我正在开发的软件的某些功能 我需要在GWT客户机和服务器之间传递POJO,方法是将POJO编组/解编组到JSON中/从JSON中传出 好的,说起来容易做起来难,因为我需要两边的POJO-JSON转换器来匹配 问题1。JSON中有标准的POJO表示法吗?是否有ietf RFC或ISO或ECMA指定JSON中POJO符号的格式?还是一种人人自由、自由主义的无政府状态 问题2。抛弃和Jackso

我正在使用Resteasy和GWT。由于某些原因,正如许多其他人有类似的动机一样,我没有将GWT-RPC用于我正在开发的软件的某些功能

我需要在GWT客户机和服务器之间传递POJO,方法是将POJO编组/解编组到JSON中/从JSON中传出

好的,说起来容易做起来难,因为我需要两边的POJO-JSON转换器来匹配

问题1。JSON中有标准的POJO表示法吗?是否有ietf RFC或ISO或ECMA指定JSON中POJO符号的格式?还是一种人人自由、自由主义的无政府状态

问题2。抛弃和Jackson(与JAXB一起使用时)和Autobeans是否为POJO生成相同的JSON

第三季度。这是最关键的问题。你可以忽略上面的其他问题,但你必须回答这个问题。给我一对服务器端和GWT客户端JSONizer/deJSONizer的组合,它们一起工作。例如,我可以在客户端使用Autobeans,在服务器端使用JAXB抛弃,并期望jsonizedpojo符号相同吗

第四季度。通过在whatever.GWT.xml文件中包含JAXB的java源代码,Jettison/Jackson,是否可以在GWT客户端上使用JAXB-Jettison或JAXB-Jackson?JAXB、抛弃/Jackson源代码中是否有部分可能(例如)依赖于反射或不可序列化等,从而无法在GWT客户机代码中使用JAXB+抛弃/Jackson?如果可能,请解释如何进行

~

我应该澄清有关Q1的问题

我不是问关于JSON的RFC。我问的是JSON POJO格式。当POJO转换为JSON时,每个人都以自己的方式进行转换——因此,我认为应该有一个RFC来标准化POJO转换为JSON的方式和格式。有没有标准!!我希望你的回答不应该引用我的JSON的RFC

~

怎么样

有人需要告诉我

  • GWT客户端上的獾鱼
  • 和GWT客户端服务器匹配JSON-RPC

JSON只是JavaScript的一个子集,它是由道格拉斯·克罗克福德“发明”的。以下是应用程序/json的RFC:。因此,任何服务器端解决方案都应该创建相同的结果


我们在客户端使用RestyGwt(),它的工作方式非常好。它的JSON编码风格与默认的Jackson数据绑定兼容,因此它也应该与Jackson一起工作。

没有映射标准,但我认为,鉴于JSON格式的简单性,以及Java bean的事实标准(即set/get方法到逻辑属性名称的映射),存在明显的简单映射。为数不多的例外之一是抛弃

抛弃不是JSON/POJO库,而是JSONXML库:它将JSON转换为XML API调用(反之亦然),以允许在JSON上使用JAXB等XML工具进行XML数据绑定。但这里的代价是,它产生和使用的JSON具有额外的复杂性,而这只需要使用XMLAPI。与Jackson、GSON、Flex json和其他“本机”json库使用的普通直接绑定相比,这就是它的非标准之处

我会建议不要使用抛弃,除非你真的,真的必须出于某种原因。即使同时生成XML和JSON也不行——通常,最好使用JSON工具将JSON映射到POJO或从POJO映射JSON,并将XML映射到POJO或从POJO映射XML(使用JAXB等)


抛弃是为了弥补(当时)更成熟的XML工具和新的JSON格式之间的差距。但是现在有几十个成熟的JSON库可用,这并没有什么好处。

谢谢你的回答。然而,我正在用jboss jaxb json badgerfish编写一些试用代码,这似乎需要抛弃jar(为什么?)。Badgerfish格式非常简单。是的,唉,Badgerfish确实生成了bastardized json,所以它可能无法与其他lib一起工作。但如果你能在两边都使用抛弃,它会起作用的。JAXB需要它的原因是它是一个XML库,所以要生成/使用JSON还需要其他东西。FWIW,Jackson也可以使用JAXB注释,尽管它不支持JAXB API。在客户端使用抛弃/Jackson时:抛弃本身不使用反射,只需要Stax API(来自JDK 1.6,或1.5的单独jar)。但是JAXB大量使用反射、注释和内省。类似地,Jackson需要反射、注释来进行bean属性自动检测。我还没有做过GWT开发,所以我不能说这个问题有多大;听起来可能有问题。