Почему JSON.stringify включает только часть этого объекта?

Когда я использую JSON.stringify для объекта запроса Parse.com, он включает только «атрибуты» и игнорирует остальные. Как мне преобразовать весь объект?

Мой запрос к Parse, протоколирование результатов со строкой и без нее:


    // load races from Parse    
    var Events = Parse.Object.extend("Events");
    var query = new Parse.Query(Events);

    query.equalTo("theYear", currentYear);
    query.ascending("sortOrder");       

    query.find({
      success: function(results) {
        forgeLog("Got "+results.length+" Events from Parse");

        forgeLog("First object in array logged directly:");
        forgeLog(results[0]);

        forgeLog("First object in array with stringify:");
        forgeLog(JSON.stringify(results[0]));
      },
      error: function(error) {
          forgeLog("Error getting Events from Parse");  
      }
    });


Объект регистрируется напрямую:


    { attributes: 
     { Name: 'McCalls Motorworks',
       raceId: '0',
       sortOrder: 2,
       theYear: 2012 },
    _operations: {},
    _dirty: {},
    _hashedJSON: {},
    _escapedAttributes: {},
    cid: 'c0',
    id: 'To6lLjzwQw',
    createdAt: '2012-08-09T13:51:29.259Z',
    updatedAt: '2012-08-10T13:23:07.280Z',
    _setting: false,
    _previousAttributes: 
     { Name: 'McCalls Motorworks',
       raceId: '0',
       sortOrder: 2,
       theYear: 2012 } 
    }

Объект, зарегистрированный с помощью stringify:


    {"Name":"McCalls Motorworks","raceId":"0","sortOrder":2,"theYear":2012}

Обновление: на самом деле я только что проверил себя, и это работает, когда я вручную определяю объект, вырезая и вставляя первый объект и определяя переменную самостоятельно. Однако, когда я преобразую результат в строку сразу после его получения из Parse (как в примере кода), он возвращает только часть атрибутов... но первый объект — это то, что я скопировал непосредственно из своей консоли при регистрации результата из Parse перед попыткой натягивать.


person MikeBman    schedule 03.10.2012    source источник
comment
На какой платформе? У меня отлично работает в Safari 6.0.1   -  person Claude    schedule 04.10.2012
comment
Мне тоже подходит (проверено в Chrome 22).   -  person James Allardice    schedule 04.10.2012
comment
он должен работать нормально. посмотрите здесь: jsfiddle.net/9TA34/1. дайте более подробную информацию о браузере, движке js.. возможно, приведите пример   -  person gion_13    schedule 04.10.2012
comment
Пожалуйста, определите весь объект. Чего именно не хватает?   -  person Lewis Diamond    schedule 04.10.2012
comment
@LewisDiamond Он, казалось, довольно ясно сказал об этом: «включает атрибуты и игнорирует остальные».   -  person Barmar    schedule 04.10.2012
comment
Атрибуты @Barmar могут относиться к свойствам объекта, к его свойству, называемому атрибутами, или, может быть, к чему-то еще. Его вставленный вывод - это вывод? Или это ввод? Он имеет в виду, что stringify отбрасывает функции? Или что-то другое. Этот вопрос, безусловно, нуждается в уточнении.   -  person Lewis Diamond    schedule 04.10.2012
comment
Вышеупомянутый объект является входным: это объект из ответа, который я получаю от Parse.com js API при выполнении запроса. При запуске stringify непосредственно из ответа Parse он возвращает только часть «атрибутов» вышеуказанного объекта. Когда я вставил этот объект прямо в свой код, он правильно оформлен. Итак, я предполагаю, что настоящий вопрос заключается в следующем: что может отличаться от полученного объекта синтаксического анализа, что предотвращает преобразование всего объекта в строку?   -  person MikeBman    schedule 04.10.2012
comment
Тогда приведите как реальный пример...   -  person Develoger    schedule 04.10.2012
comment
@DusanRadojevic Я переформулировал вопрос с более полным примером.   -  person MikeBman    schedule 04.10.2012
comment
@Barmar Я сделал все возможное и обновил вопрос, чтобы он был более ясным. Спасибо за ваше время!   -  person MikeBman    schedule 04.10.2012
comment
Измените forgeLog на console.log, это все еще происходит?   -  person Barmar    schedule 04.10.2012
comment
@Barmar, да, это так - я работаю в среде Trigger.io, и forgeLog просто выводит его в отладчик своей веб-консоли.   -  person MikeBman    schedule 04.10.2012


Ответы (2)


да, я также проверил многие браузеры, но все работает нормально, это не создает никаких проблем вручную.

что я думаю, что вы напрямую устанавливаете значение парсера в JSON.stringify иногда это происходит с js

попробуйте одну вещь, инициализируйте ее в каком-то объекте и передайте этот объект в JSON.stringify, может это сработает

person Gyan Chandra Srivastava    schedule 03.10.2012

Эктор из Parse смог мне это объяснить:

Это связано с тем, что createdAt, objectId, updatedAt не являются атрибутами. Это свойства самого объекта, поэтому они не подхватываются сериализатором JSON.

person MikeBman    schedule 04.10.2012