我有一个带有函数的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。
答案 0 :(得分:2)
你明白了。看一下JSON.encode
输出。 JSON表示中只允许使用简单数据类型,部分是为了便于创建,部分是为了安全性。 (我们使用JSON.decode
而不是eval
之类的原因是嵌入函数的可能性。)
您必须修改JSON库源代码以接受函数,或编写自己的代码以便在转换为字符串时保留对象的文字定义。
但是,请考虑一下您不需要这样做的可能性。可能有一个更好的解决方案,但我不能在不知道你的具体情况的情况下开始解决这个问题。