Javascript 使用JSON.stringify保存对象时出现问题
使用isue获取JSON来字符串化整个对象布局。它当前仅字符串化第一个对象层级。如果我选择第二个级别,并且只将其严格化,它就会起作用。但是,当我尝试整个对象时,它会删除任何子级别的属性。这是一个来自构造函数的片段,用于创建表实例Javascript 使用JSON.stringify保存对象时出现问题,javascript,jquery,json,local-storage,Javascript,Jquery,Json,Local Storage,使用isue获取JSON来字符串化整个对象布局。它当前仅字符串化第一个对象层级。如果我选择第二个级别,并且只将其严格化,它就会起作用。但是,当我尝试整个对象时,它会删除任何子级别的属性。这是一个来自构造函数的片段,用于创建表实例 var doesTableNameExist, dataBase = { tables: {} }, _dataBaseInstance, _tableInstance = { Ta
var doesTableNameExist,
dataBase = {
tables: {}
},
_dataBaseInstance,
_tableInstance = {
TableName: "",
Columns: "",
Rows: "",
RowCount: ""
}
this.TableName = tableName;
this.Columns = columns;
this.Rows = rows;
this.RowCount = 0;
_dataBaseInstance = localStorage.getItem($config.dataBaseName);
if (!!_dataBaseInstance)
{
dataBase = JSON.parse(_dataBaseInstance);
}
doesTableNameExist = dataBase.tables[tableName];
if (!!doesTableNameExist && !forceNew)
{
errorMsg = String.jDBaseFormat("That table name is already used! You cannot have two tables with the name {0}", this.TableName);
console.error(errorMsg);
}
else
{
//create the object table and store it after running JSON against it.
_tableInstance = this;
dataBase.tables[tableName] = _tableInstance;
localStorage.setItem($config.dataBaseName, JSON.stringify(dataBase));
console.log(String.jDBaseFormat("Storing new table '{0}'.", this.TableName));
}
任何帮助都将不胜感激。在stringify过程之后,对象的外观是:
对象-->表:[];非对象-->表:-->表实例
下面是运行时期间的对象
所以我知道物体是正确的。但是JSON会删除对象属性“tables”中的任何内容。我不明白为什么
我也这样试过:
嗯。我在想。它是构造函数表函数的一个实例。我试过了,但也没有成功。我认为这会使它成为一个通用对象,而不会附加实例
_tableInstance = $.extend({}, this);
dataBase.tables[tableName] = _tableInstance;
localStorage.setItem($config.dataBaseName, JSON.stringify(dataBase));
所以我想知道我是否应该返回一个对象,而不是使用表的“新”构造函数,这样我存储的是一个常规对象而不是构造函数的实例?我会试试看。谢谢你的帮助 你能用小提琴再现这个吗?我试过了,但是我有问题,因为你的代码缺少结构。是的,给我一点时间。事实上,我不得不做太多的废话来处理这个实例。我想知道它是否引起了问题,因为它是类或实例的实例,而不是普通数组/对象。因此,我甚至尝试采用“this”并使用$.extend创建一个复制“this”实例的对象,然后将该表字符串化,但结果仍然相同。这对我来说很奇怪。我认为用JSON进行字符串化应该贯彻整个对象模型。在我开发的公司里,我们经常在应用程序中使用它,我们可以很好地处理多个级别的对象。所以,想知道为什么JSON.stringify对这个对象不是很好。。。。lol:(好吧,如果它不仅仅是一个普通对象,那很可能就是你遇到问题的原因。json只能代表一个普通对象/数组。。