如何将变量传入JSON对象并以JSON格式打印(支持console.table)
如何将变量传入对象并生成可用于console.table的结构?
需求:将变量值注入到对象中,最终输出能直接用于console.table()的对象结构。
错误实现及问题分析
以下几种写法均无法实现需求,问题原因如下:
- 使用
JSON.stringify拼接字符串:
var name = "someName"; const json = JSON.stringify('{"result":'+name+', "count":42}'); const obj = JSON.parse(json); console.log(obj);
拼接后的字符串为{"result":someName, "count":42},其中someName未被引号包裹,属于无效JSON格式,JSON.parse会直接报错。
- 直接拼接字符串:
var name = "someName"; const json = '{"result":'+name+', "count":42}'; const obj = JSON.parse(json); console.log(obj);
与上面问题一致,拼接出的JSON字符串格式不合法,字符串类型的变量未被引号包裹,解析失败。
- 转义引号包裹变量名:
var name = "someName"; const json = '{"result":\"name\", "count":42}'; const obj = JSON.parse(json); console.log(obj);
这里将字符串"name"直接作为result的值,而非读取变量name的实际内容"someName",不符合需求。
正确解决方案
不需要通过拼接JSON字符串的方式实现,直接创建JavaScript对象/数组即可——console.table()本身就支持直接传入JS对象或数组,无需额外的JSON转换:
var debugJSON = []; var section_number = 1; var i = 25; var x = section_number - i; const tempJSON = { "section": section_number, "index": i, "fieldname": x, "isValid": "not required" }; debugJSON.push(tempJSON); console.log(debugJSON); // console.table(debugJSON); // 部分环境(如Chrome、Stack Overflow)可能存在显示问题,本地正常环境可直接使用
说明
直接将变量赋值给对象的属性,再将对象存入数组,这样生成的数组/对象可以直接被console.table()识别,输出结构化的表格。
内容的提问来源于stack exchange,提问作者Loizos Vasileiou
相关产品推荐
相关产品推荐

