1

我有问题。我试图将 JavaScript 对象编码为 JSON。这是我的 Sencha 应用程序数据库对象的预览图像:

http://s11.postimg.org/ttelg6u0z/Przechwytywanie.png

我需要将它放入本地会话,所以我必须对这个对象进行编码。我尝试使用:

  1. JSON.stringify(db)
    我的结果只有:
    {"version":"1.0"}

  2. Ext.Encode(db) - 这是 Sencha 的函数
    ,结果我得到:
    未定义

'db'是屏幕上的一个对象。

需要用所有数据对这个对象进行编码。

请帮我

[编辑]

有没有其他方法可以将 JS 对象转换为字符串并将其放入本地或会话存储中?因为对象不能存储在会话或本地存储中

4

2 回答 2

1

JSON.stringify 方法不会转换函数或空/未定义变量,在您的对象中,您只有属性“版本”作为字符串值,其他属性是函数和原型。

If undefined, a function, or an XML value is encountered during conversion it is either omitted (when it is found in an object) or censored to null (when it is found in an array).

要了解有关 JSON.stringify 的更多信息,您可以阅读以下内容:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

关于 EXT,请确保在 ext 范围内声明了 db 对象标识。

于 2013-10-02T06:49:45.743 回答
0

Ext.Encode 旨在用于路由参数,如您在此示例中 所见 JSON.stringify 旨在用于从 javascript 对象构造 JSON 字符串。

两者都做不同的事情,你想在这里实现什么?

至于为什么 Ext.Encode 返回 undefined: 'db' 是一个对象,还是别的什么?也许是因为您的对象中有函数属性。我不知道 Ext.Encode 是如何实现的,但它们可能只允许简单的属性。这可以解释为什么 Ext.Encode 不起作用但 JSON.stringify 起作用。(JSON.stringify 在函数属性等方面更宽松一些)

于 2013-10-02T06:50:06.300 回答