преобразование строки в объект json

#javascript #node.js #sequelize.js

#javascript #node.js #sequelize.js

Вопрос:

Я попытался отобразить свои данные в формате json. Сначала я попробовал JSON.stringify, затем он отображается в строковом формате so, затем снова я попробовал JSON.parse, где я получаю массив объектов, наконец, я попытался сохранить [0] для объекта parse, который выдает ‘undefined’…

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

Я предоставляю вывод следующего console.log..

 try{
var timekeep =  await Orders.findAndCountAll(
    {         
        where : {
            cid : orders_info.cid,
        },      
        order: [
           ['id', 'DESC']
      ],
      limit: 1,
    }
);
 console.log("RESULT => ", timekeep); 

 var datjsn =  JSON.stringify(timekeep);
 var jsonsr = JSON.parse(datjsn);
 var data23 = jsonsr[0];

 console.log('alpha1'  datjsn);
 console.log('delta2'  jsonsr);
 console.log('beta'  data23);  


output of the console logs
RESULT =>  { count: 1,
rows:
[ orders {
   dataValues: [Object],
   _previousDataValues: [Object],
   _changed: {},
   _modelOptions: [Object],
   _options: [Object],
   __eagerlyLoadedAssociations: [],
   isNewRecord: false } ] }

 alpha1 {"count":1,"rows":[ {"id":4006,"mid":1,"cid":41,"wid":7138,"oid":null,"status":null,"options":null,"starttime":"2018-08-15T06:08:55.000Z","duration":null,"ordertotal":50,"counter":null,"closetime":null}]}
 delta2 [object  Object]

 beta undefined
  

Комментарии:

1. попробуйте jsonsr.rows[0]

2. что вы хотите в бета-версии? это не массив, поэтому вы не можете использовать jsonsr[0] напрямую. Вам нужно количество или строки? или что-то внутри строк?

3. да, мне нужны данные внутри строк.. между тем я также хочу подсчитать количество.

Ответ №1:

var data23 = jsonsr[0];

Здесь вы заняли неправильное место. На самом деле данные находятся в jsonsr.rows[0].

Для этого вы можете использовать,

 jsonsr.rows[0];
  

или, если значение ключа неизвестно, используйте Object.keys , чтобы получить все объекты в массиве и proceeding with loop с условием проверки значения объекта в array and length greater than 0 может получить все данные.

Комментарии:

1. итак, я добавил вот такой var data23 = jsonsr.rows[0];

2. Да, потому что данные находятся в массиве объектов. Чтобы утешить их, вы должны изменить результат на string.

Ответ №2:

Объект — это sequelize object, а не просто object. Попробуйте использовать .get()

 var timekeep =  await Orders.findAndCountAll(
    {         
        where : {
            cid : orders_info.cid,
        },      
        order: [
           ['id', 'DESC']
      ],
      limit: 1,
    }
);

console.log(timekeep.rows[0].get())