2013-10-02 3 views
1

У меня проблема. Я попытался кодировать объект JavaScript в JSON. Вот предварительный образ моего объекта базы данных приложения Сенча:

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

мне нужно положить его в локальный сеанс, поэтому я должен кодировать этот объект. Я попытался с помощью:
Кодирование объекта JavaScript JSON

  1. JSON.stringify (дБ)
    и мой результат только:
    { "версия": "1,0"}

  2. Ext.Encode (дБ) - это функция Сенча в
    и в результате я получил:
    undefinied

'db' - это объект с экрана.

Необходимо закодировать этот объект со всеми данными.

Пожалуйста, помогите мне

[EDIT]

Есть ли другой способ преобразовать объект JS в строку и поместить его в локальную или сеанса хранения? Поскольку объект не может быть сохранен в сеансе или локальном хранилище

+0

Похоже, что 'db' не является объектом литерала, а экземпляром функции/класса – Phil

+0

Я не думаю, что вы можете кодировать функции в json – Jianhong

+0

Есть ли другой способ конвертировать JS-объект в строку и помещать его в локальное или сеансовое хранилище? Поскольку объект не может быть сохранен в сеансе или локальном хранилище – user2837459

ответ

1

Метод JSON.stringify не преобразует функции или переменные null/undefined, в вашем объекте у вас есть только свойство «версия» в качестве строкового значения, другие свойства функций и прототипов.

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, убедитесь, что объект БД определяет является объявлен в области внутр.

+0

Хорошо, спасибо. Это объясняет, почему это не работает.Является ли какой-либо метод преобразования объектов JavaScript со свойствами, функциями и прототипами в JSON? – user2837459

+0

@ user2837459 вопрос вот почему вы хотите преобразовать метод в строку? если это библиотека, которую вы можете назвать позже, вам лучше использовать локальное хранилище для хранения данных, note: localstorage - ограниченное хранилище, а объекты разбора обрабатывают обработку. –

+0

Поскольку мне нужно сохранить экземпляр объекта, возвращенный методом openDatabase(), и использовать его после перезагрузки моего приложения. – user2837459

0

Ext.Encode предназначен для использования в параметрах маршрута, как вы можете видеть в this example JSON.stringify предназначен для использования JSON-строк из объектов javascript.

Оба делают разные вещи, чего вы пытаетесь достичь здесь?

Что касается причины, по которой Ext.Encode возвращает undefined: это 'db' объект, или это что-то еще? Возможно, это потому, что у вас есть свойства функции в вашем объекте. Я не знаю, как реализован Ext.Encode, но они могут допускать только простые свойства. Это объясняет, почему Ext.Encode не работает, но JSON.stringify делает. (JSON.stringify немного более мягко, когда дело доходит до свойств функции и т. Д.)

+0

Да, это объект. Я не знаю, почему это не определено. В Ext.Encode можно преобразовать объекты JS в JSON. Вот пример: http://docs.sencha.com/core/manual/content/utility.html#util-json – user2837459

+0

Но я не знаю, почему это не работает в моем случае – user2837459

Смежные вопросы