重建JSON序列化的对象

Rebuilding an object serialized in JSON

本文关键字:对象 序列化 JSON 重建      更新时间:2023-09-26

在我的web应用程序中,我使用JSON.stringify()序列化存储对象,如下所述。这很棒,我可以很容易地从JSON字符串重新创建对象,但是我丢失了所有对象的方法。是否有一种简单的方法可以将这些方法添加回我忽略的对象中—可能涉及到原型,这是我不太熟悉的东西?

或者仅仅是我自己创建一个精细的函数来做这件事?

编辑:理想情况下,我正在寻找类似的东西:

Object.inheritMethods(AnotherObject);

调用JSON后获得对象。解析,你有很多选择。下面是一些例子。

    Mixin
  1. 有许多技术可以做到这一点,本文很好地描述了这些技术。但是,这里有一个简单的示例,它不需要任何新的语言特性。请记住,对象本质上只是一个映射,因此JS使向对象添加附加属性变得容易。
    var stuffToAdd = function() {
        this.name = "Me";        
        this.func1 = function() {
            print(this.name);
        }
        this.func2 = function() {
            print("Hello again");
        }
    }
    var obj = JSON.parse("{}");
    stuffToAdd.call(obj);
    
  2. 原型

    使用对象。Felix提到的create方法。由于这只在ES5中提供,所以您可能需要使用shim来保证其可用性。

老问题,但我今天搜索这个问题时发现了它。我在其他地方找到了一个解决方案和更新(ES6):

对象。assign(new myclass(), jsonString);