当前位置: 首页 > 面试题库 >

如何使用循环引用保存对象?

孙承
2023-03-14
问题内容

我想在本地保存具有循环引用的对象。我有什么选择?

我的第一个想法是使用HTML5本地存储,但是由于循环引用,我无法对该对象进行字符串化。

具体来说,我正在尝试保存当前选择的DOMSelection对象

例:

  var sel = window.getSelection();
  var selstring = JSON.stringify(sel); // Breaks here ...
  localStorage.setItem("selection",selstring);

我现在可以使字符串化工作的唯一方法是忽略某些对象,如下所示:

var selstring = JSON.stringify(sel,function(k,v){
    if( k=="anchorNode" ||
        k=="baseNode" ||
        k=="extentNode" ||
        k=="focusNode") return undefined;

    return v;
});

但这给我留下了一个相当空的DOMSelection对象,不足以满足我的需要。

还有其他方法可以保存该对象吗?唯一的要求是它可以在移动safari中运行,其他任何事情都是真的。该解决方案可以使用javascript或jquery(如果需要,也可以使用其他js库)。

感谢您的任何帮助,您可以提供。


问题答案:

查看Crockford的JSON-JS GitHub存储库。它有一个文件,cycle.js据称可以将具有循环引用的对象转换为JSON,然后使用JSONPath转换回来。请参阅存储库的“阅读我”和文件注释中的最后一段。



 类似资料:
  • 我正在使用JPA/Hibernate。 如果我持久化,我会得到“对象引用一个未保存的瞬态实例”或“在刷新之前保存瞬态实例:Entities.file.rootFolder->Entities.Category”(取决于首先持久化的内容)。 我必须有一种方法来注释这一点,这样它就会起作用,不管我先保存什么!?我可以通过编程的方式来解决这个问题,首先插入一个实体,而不引用另一个实体,然后插入另一个实体

  • 问题内容: 我试图描述使用@JsonIdentityInfo杰克逊2 这里。 为了进行测试,我创建了以下两个类: 当然,幼稚的方法会失败: 添加到A类和/或B类也不起作用。 我希望我可以序列化(然后反序列化)为这样的东西:(尽管对JSON不太确定) 我怎样才能做到这一点? 问题答案: 似乎jackson-jr具有Jackson功能的一部分。一定没有切入。 如果可以使用完整的Jackson库,则只需

  • 我希望我可以序列化(稍后反序列化)为如下所示:(但对JSON不太确定) 我怎么能那样做?

  • 问题内容: 如果我从json.net获得序列化的JSON,如下所示: 我想让淘汰赛在FooList上输出foreach,但是我不确定如何继续,因为$ ref东西可能会抛出东西。 我在想解决方案将以某种方式通过不使用以下方式强制将所有Foos呈现在FooList中: 但这似乎很浪费。 问题答案: 从服务器接收的json对象包含循环引用。在使用对象之前,您必须首先 从对象中删除所有属性,这意味着`$r

  • 问题内容: 在正在进行的项目中,人们编写了服务类来访问DAO。几乎每个业务对象都具有使用自己的DAO的自己的服务。在某些服务上,我们使用对其他服务的引用。目前,人们正在实例化构造函数内部所需的服务。 但是现在,我遇到了麻烦,因为服务A需要服务B而服务B需要服务A,因此对任一构造函数的调用都会导致堆栈溢出… 示例(伪代码): 您将如何解决?使用单例模式? 谢谢 问题答案: Spring框架通过使用依

  • 下面是我的父组件,它包含一个循环的多个输入。如何选择一个来聚焦?在这种情况下,我必须创建动态吗?