将对象串行化为字符串并将其反序列化为ECMAScript 6中的对象

时间:2017-02-13 10:24:35

标签: javascript json node.js serialization ecmascript-6

ES6(ECMAScript 6)中有一个新关键字'class',我的课就是这样:

ApplicationWindow {
    id:aplWin
    visible: true
    minimumWidth:  1280
    minimumHeight: 1024

    StackView {
        id: stackView
        anchors.fill: parent
        initialItem: SignInWin {}
        focus: true // <--- HERE!
    }
}

Page {
    id: root
    width: parent.width + 500
    height: parent.height
    focus: true // <--- AND HERE

    Rectangle {
        border.color: "black"
        y: 200
        width: 50
        height: 20
        z: 1
        TextEdit {
            anchors.fill: parent
            color: "black"
            focus: true
        }
    }
}

问题是'str'通过使用JSON.stringify获得不包含类名和因此JSON.parse(或其他工具)将无法取消序列化回'obj'对象< / strong>即可。在'str'上使用JSON.parse后,结果不再是MyClass类的实例。

class MyClass {
    constructor() {
        this.MyProperty = 0;
    }
}

var obj = new MyClass();
console.log(obj);
//result:
//MyClass {MyProperty:0}

var str = JSON.stringify(obj);
console.log(str);
//result:
//"{MyProperty:0}"

如何将实例序列化为字符串并反序列化回ES6中的实例? 如果JSON.stringify / JSON.parse不起作用,那么在NodeJS中使用哪些好的库?

1 个答案:

答案 0 :(得分:0)

由于JSON语法没有关于类名的定义,因此无法将JSON反序列化为对象。因此,应该出现解包器功能。

应该修改JSON语法,以便在反序列化过程的对象可以自动完成之前包含类名。

例如

SomeClass {
    "field1": "value1",
    "field2": "value2"
}