как преобразовать объект string в объект json в javascript

#javascript #node.js #sequelize.js

#javascript #node.js #sequelize.js

Вопрос:

Я изменил данные в строковом формате, где это было похоже на [object object], но я хочу изменить строковый объект на объект json Я попробовал json.parse, но он не превратился в объект json

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

 try {
  var timekeep = await Orders.findAndCountAll({
    where: {
      cid: orders_info.cid,
    },
    order: [
      ['id', 'DESC']
    ],
    limit: 1,
    raw: true,
  });
  var cont1 = JSON.stringify(timekeep.rows[0]);
  var obj = JSON.parse(cont1);
} catch (err) {
  console.log(err)
}

console.log('org data'   timekeep)
console.log('data as string'   cont1);

// now when I am trying to print
console.log('data as json'   obj);
  

вывод console.logs

 org data [object Object]

data as sttring{"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}

data as json [object object]
  

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

1. var obj = JSON.parse(obj); => var obj = JSON.parse(cont1);

2. К вашему сведению, объекты — это объекты. Они могут быть представлены в виде JSON, который является строкой. Поэтому говорить «объект string» и «объект JSON» не имеет смысла. Объект или JSON — вот и все.

3. Кроме того, измените последнюю строку на console.log(obj); — Это уже объект. Когда вы это делаете console.log("something" object) , это автоматически превращает объект в строку и добавляет его к строке, которую вы регистрируете. Если вы хотите войти с небольшим количеством текста, чтобы сообщить вам, что вы вошли, используйте запятую, подобную этой… console.log("data as object", obj);

4. Просто console.log(obj) это уже объект json.

5. @MoadEnnagi Не существует такого понятия, как объект json.

Ответ №1:

Из того, что я вижу, вы уже конвертируете его в JSON с var obj = JSON.parse(cont1);

Итак, у вас уже есть JSON, просто то, как вы его печатаете, неверно. К нему с запятой вместо .

 console.log('data as json', obj)
  

выполняет конкатенацию строк и пытается объединить строку с объектом

Ответ №2:

После объединения строк он печатается data as json [object object] . если вы поместите , вместо этого, этот объект будет напечатан правильно. Во фрагменте вы можете увидеть разницу.

 var jsonstr = '{"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}';

console.log(JSON.parse(jsonstr));

console.log('data as json' , JSON.parse(jsonstr));

console.log('data as json'   JSON.parse(jsonstr));  

Ответ №3:

console.log просто объект; если вы хотите использовать объект log и строку, вместо

 jsonString = '{"key1":"value1","key2":"value2"}'

jsonObject = JSON.parse(jsonString)

console.log(jsonObject) // logging just the object

console.log('jsonObjectName' , jsonObject) // logging object with string 

console.log('jsonObject.key1 : '    jsonObject.key1 ) 


// this may come handy with certain IE versions
function parseJSON(resp){
    if (typeof resp === 'string') 
        resp = JSON.parse(resp);
    else
        resp = eval(resp);
    return resp;
}