【问题标题】:Java to JavaScript (JSON): how to restore connections by reference?Java 到 JavaScript (JSON):如何通过引用恢复连接?
【发布时间】:2019-02-03 15:32:09
【问题描述】:

我在 Java 中返回了一些对象 地图>> 在前端的 REST 端点中。

这里要考虑的重要一点是,同一个 MyObject 可能出现在不同的位置,因此更新一个 Object 会更新它的所有出现。

我需要在 TypeScript 中所有出现的 MyObject 中通过引用来恢复这些连接。 我可以通过它们的 ID 区分所有出现的 MyObject。 因此,我目前正在将所有出现的 MyObject 替换为其第一个,之前按 ID 保存在地图中。这样我就可以通过引用在所有出现的同一个 MyObject 之间恢复连接。

我的解决方案似乎没问题,但我仍然想知道我是否没有重新发明轮子。有没有比我更好的替代方法来实现这个目标?

【问题讨论】:

  • 为什么要投反对票?请解释。你不认为这是一个很好的信息吗?

标签: javascript java json pass-by-reference


【解决方案1】:

听起来您正在通过 REST 服务将对象从 Java 序列化为 JSON。

当客户端在 TypeScript 中接收到对象时,它会将这些对象中的每一个视为单独的。这就是通过网络发送它的本质......基本上每个都写成一个字符串,而单个对象的内存地址之类的东西在那时还没有实际意义。

我不确定通过将所有相等的对象替换为每个对象一个单例,除了已经在做的事情之外,您还能做更多的事情。

说实话,这听起来像是一个非常独特的用例。

【讨论】:

  • 是的,正如我所想。但是我认为如果每个对象在序列化后都有一个额外的内存地址字段,这将是一个很棒的功能,以便在反序列化期间通过引用自动恢复连接。
  • 另外,除了第一个以外的所有事件都只使用内存地址,它还可以减少要传输的 JSON 的大小。
  • 内存地址依赖于很多东西。操作系统类型,一个正在使用的编程语言等。它不一定是从一台机器翻译到另一台机器的东西。 REST(HTTP 上的 JSON)等基于标准的交换的主要思想之一是它消除了那些特定于系统的依赖关系。这使得任何人都可以使用 REST 端点,而不管他们的具体实现是否与服务器的实现相匹配。
  • 是的,从单机层抽象出来就好了。在谈论 memery-address 时,我没有很好地解释自己。对于“内存地址”,我的意思是一个唯一标识符,用于区分同一对象的所有出现(例如,我认为对象的哈希码就足够了)。
  • 不一定是 Java 方法,例如与该对象对应的 JSON 的 SHA 3 512 哈希。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2017-09-22
  • 2011-08-15
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多