JavaScript/GSON:通过对象图动态访问 JSON 引用(循环引用)

2024-03-28

由于存在多个循环引用,我在通过 Google GSON 序列化 Java 对象时遇到了问题。我所有的尝试都以 StackOverflowException 结束,因为 GSON 无法处理这些循环引用。

作为解决方案,我发现以下GraphAdapterBuilder:

http://code.google.com/p/google-gson/source/browse/trunk/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java?r=1170 http://code.google.com/p/google-gson/source/browse/trunk/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java?r=1170

例子:https://groups.google.com/forum/#!topic/google-gson/z2Ax5T1kb2M https://groups.google.com/forum/#!topic/google-gson/z2Ax5T1kb2M

{
  "0x1": {
    "name": "Google",
    "employees": [
      "0x2",
      "0x3"
    ]
  },
  "0x2": {
    "name": "Jesse",
    "company": "0x1"
  },
  "0x3": {
    "name": "Joel",
    "company": "0x1"
  }
}

这工作得很好,但我仍然无法通过对象图动态访问参考值(0xn),如下所示:

alert(0x3.company.name);--> 应该打印“Google”,但我只收到undefined

有可能以某种方式实现这一目标吗?

也许有一个习惯JSON.parse(ajaxResponse, function(key,value) {}用引用的对象树替换变量的函数?


对于未来的用户,请参考这个使用 GraphAdapterBuilder 的答案:https://stackoverflow.com/a/10046134/1547266 https://stackoverflow.com/a/10046134/1547266

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript/GSON:通过对象图动态访问 JSON 引用(循环引用) 的相关文章

  • IE toDataUrl() 安全错误

    我需要从画布上获取图片 因此我从 Amazon S3 获取图像 我在那里启用了跨源资源共享 CORS 并将 croseOrigin 属性 匿名 设置为 img 它适用于 Chrome 和FireFox 但在 IE 上 我通过调用 toDat
  • 如何在 JavaScript 中通过方括号访问私有字段

    这段代码的工作原理 class Test field get field return this field 但如果我想计算字段名称我必须使用方括号 但它不起作用 class Test field get field return this
  • 如何使用 Javascript 更改具有相同类名的多个元素?

    跟进至我之前的问题 https stackoverflow com q 42389937 2803565 我想使用 JS 使用按钮来显示 隐藏具有相同类名的多个元素 但似乎我只能更改具有特定类名的第一个元素 并且页面上具有相同类名的所有其他
  • 在 Javascript 中维护数组顺序

    我是 JavaScript 新手 在使用数组时遇到问题 我希望数组按照我显式编写的方式排序 而不是 JavaScript 决定它想要的方式 如果我们有一个数组 var array 0 zero 4 four 2 two 当我选择在控制台中显
  • 未捕获的类型错误:$(...).lightGallery 不是函数

    当我尝试单击该链接时 它会在浏览器控制台中显示 Uncaught TypeError lightGallery is not a function anonymous function index html 250dispatch jque
  • 当用户输入时将输入值转换为货币格式

    我无法将输入值转换为货币格式 我想在用户键入数字 5 000 00 125 000 00 时自动添加千位和小数分隔符 这是我的代码 input CurrencyInput on blur focus keyup function this
  • 如何在 javascript 中使用 .net 资源文件

    无论如何 我可以在 javascript 中访问我的资源文件 resx 吗 如果没有 那么是否有任何解决方法可以用不同语言的 javascript 显示消息 如果您的 javascript 在页面中 您可以使用 var globalReso
  • RegEx 从 CSS 背景样式中提取 URL

    我有一个这种形式的字符串 url http www example com imgs backgrounds bg80 jpg repeat scroll 10 0 transparent 这是来自某个元素的 CSS 样式 该元素目前在页面
  • Discord JS - DiscordAPIError:缺少访问权限

    所以我按照磨损钥匙教程来不和谐机器人 我不知道问题是什么 这是错误 home container node modules discord js src rest RequestHandler js 349 throw new Discor
  • Parse JS SDK:无法使用主密钥,尚未提供

    我需要在我的 angular2 应用程序中使用 masterKey 但我无法将其传递给initialize功能 我无法用谷歌搜索出原因 从package json parse 1 9 2 初始化 import Parse from node
  • 错误:找不到模块“@discordjs/opus”

    每次我运行不和谐的语音识别代码时 它都会上线 但一旦加入频道 我的代码就会显示错误 找不到模块 discordjs opus Require stack C Users SURYASH Desktop DiscordSpeechBot no
  • 使用Javascript自动将光标移动到下一个表单字段[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否可以使用Javascipt自动将
  • 从 select2 选定选项获取属性值

    我正在使用 Select2 插件http ivaynberg github io select2 select2 latest html http ivaynberg github io select2 select2 latest htm
  • 将对象转换为泛型类型

    我已经有一段时间没有睡觉了 所以这可能比我想象的要容易 我有一个通用类或多或少是这样的 public class Reference
  • 如何格式化数字? [复制]

    这个问题在这里已经有答案了 我想使用 JavaScript 格式化数字 例如 10 gt 10 00 100 gt 100 00 1000 gt 1 000 00 10000 gt 10 000 00 100000 gt 100 000 0
  • 是否可以知道函数是否使用空返回语句?

    是否有可能知道函数是否使用空 return 语句还是简单地不使用 return 关键字 例如 function noReturn function useReturn return console log noReturn undefine
  • window.open 未应用给定的高度参数

    我在链接上有一个 onclick 事件 其中执行了 url 的 window open 我还为其提供了自定义宽度和高度 但不接受它 并且弹出窗口以不同的宽度和高度显示 有人可以指导吗我这一定是哪里出了问题 我的 window open 语法
  • Phonegap - 自动包含正确的科尔多瓦

    我正在 iOS 和 Android 上开发一个 PhoneGap 应用程序 并使用 git 控制我的 www 目录版本 我知道我的 HTML 文件需要包含正确的 Cordova js 文件 取决于我当前正在开发的平台 当有人在 Androi
  • Twitter Bootstrap - 动态添加/删除选项卡和选项卡内容

    预先感谢您的任何和所有输入 帮助 建议 我正在使用 Twitter Bootstrap 选项卡来组织一些信息 这些选项卡将位于表单页面上 每个选项卡将包含一个 联系人表单 用户可以在提交整个表单之前将多个联系人添加到此页面 div clas
  • JavaScript 中的异步事件处理

    我在防止双重 多重 方面遇到问题eventListener代码中的处理 var locked button addEventListener click function if locked return locked true calcu

随机推荐