将json对象转换为json字符串并使用它的函数?

时间:2010-09-24 03:24:10

标签: javascript json mootools

我有一个带有函数的json对象:

var thread = {
    title: "my title",
    delete: function() {
        alert("deleted");
    }
};

thread.delete(); // alerted "deleted"

thread_json = JSON.encode(thread); // convert to json from object

thread_object = JSON.decode(thread_json); // convert to object from json

thread_object.delete(); // this didn't work

我将它从json字符串转换回object后,我无法使用delete()函数。

当您将某些内容转换为json时,函数已经消失了吗?

有没有办法将它们保存在json字符串中?

我正在使用Mootools。

1 个答案:

答案 0 :(得分:2)

你明白了。看一下JSON.encode输出。 JSON表示中只允许使用简单数据类型,部分是为了便于创建,部分是为了安全性。 (我们使用JSON.decode而不是eval之类的原因是嵌入函数的可能性。)

您必须修改JSON库源代码以接受函数,或编写自己的代码以便在转换为字符串时保留对象的文字定义。

但是,请考虑一下您不需要这样做的可能性。可能有一个更好的解决方案,但我不能在不知道你的具体情况的情况下开始解决这个问题。